我正在为我的wordpress主题创建我的第一个选项页面,我正在尝试在1个主要父div中创建多个子div。
基本上如果我输入1它将创建1 100%div,如果我输入2它将创建2 50%div,如果我输入3它将创建3 33.33%div,这将继续。
我目前没有任何代码,但jquery或css可以分红吗?即我点击3它将得到总和100 /值(在这种情况下将为3)并回答宽度:答案;?
我不是在寻找有人为我做我的工作,只是关于如何做到这一点的一些输入,但另一方面,如果你想创建一个jsfiddle例子,我不介意。
答案 0 :(得分:1)
是的,你可以这样做,但这是非常简单的数学... 100除以div的数量将给你正确的百分比。
例如 100 / $('.class').length
。
答案 1 :(得分:1)
如果您需要定位modern browser only,您还可以使用flexbox
布局。
关于codepen的示例:http://codepen.io/anon/pen/xmhyz(在Fx27和Chrome33上测试)
标记
<section>
<div>1</div>
</section>
<section>
<div>1</div>
<div>2</div>
</section>
<section>
<div>1</div>
<div>2</div>
<div>3</div>
</section>
CSS
section {
display: flex; /* here you set a flex container */
width: 400px;
margin: 30px;
border: 2px #ccc dashed;
}
div {
border: 1px #666 solid;
flex-grow: 1; /* this set equal width to all divs
so they fill the available space */
}
产生的影响
无论如何,如果您的浏览器不支持flexbox布局。您可以进行简单的特征检测(使用Modernizr
库),然后在 domready 事件中使用js后退将宽度设置为div,例如
if (!Modernizr.flexbox) {
/* set the equal width to all elements of you wrapper */
}
(further information关于flexbox)
答案 2 :(得分:0)
您可以准备多个宽度类并使用它们。像这样:
如果你有最多12个colums,你可以这样做:
.twelve.columns
{
Width:100%;
}
.eleven.columns
{
Width: 91.666%;
}
无论哪种方式,关于你的问题:
您可以使用calc来计算css。您可以使用:
.six.columns
{
Width:calc(100% / 6);
}
您也可以使用以下内容:calc(80% - 20px)
答案 3 :(得分:0)
我不是百分百肯定我明白你在追求的是什么......所以(根据我的理解)我会假设:
text
框div
(在父div
/容器内)div
与相同且相等大小div
s应该跨越页面的宽度这实际上是一件相当简单的事情。
首先,我们将为生成的div
s
.generated{
background:#2d2;
height: 100px;
display:inline-block;
}
.generated:nth-child(even){
background:#d22;
}
height
只是一个示例高度。
设置background
颜色,以便您可以看到框; even
规则是这样的,您可以轻松判断哪个框是哪个(div
将显示绿色&gt; RED&gt;绿色&gt; RED ...)。
display
规则将所有div
放在一行。
请参阅注释以获取解释:
$("#vin").on("change", function(){ // Create on change event
var vin = $(this).val(); // Create and set variable for number of divs
var cnt = 0; // Create the counter variable and set to 0
$("#container").html(""); // Clear the container div
while(cnt < vin){ // Loop while counter is less than number of divs
$("#container").append('<div class="generated"></div>'); // Append div to parent container
cnt++; // Increment counter
}
$(".generated").css("width", (100/vin)+"%"); // Update .generated css class with new width
})
为了简单起见,我只使用text
输入和div
容器......
<input type="text" name="vin" id="vin">
<div id="container"></div>
<!doctype html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Document</title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1/jquery.min.js"></script>
<style>
.generated{
background:#2d2;
height: 100px;
display:inline-block;
}
.generated:nth-child(even){
background:#d22;
}
</style>
<script>
$(function(){
$("#vin").on("change", function(){
var vin = $(this).val();
var cnt = 0;
$("#container").html("");
while(cnt < vin){
$("#container").append('<div class="generated"></div>');
cnt++;
}
$(".generated").css("width", (100/vin)+"%");
})
})
</script>
</head>
<body>
<input type="text" name="vin" id="vin">
<div id="container"></div>
</body>
</html>