项目中有时候会遇到这个问题:一行有3个div,希望这3个div平分屏幕宽度,并且高度等于宽度。
第一个问题:平分屏幕宽度
可以对div设置百分比宽度,而不是直接用px宽度,这里用到了响应式设计的思想,可以参考这篇文章:自适应网页设计(Responsive Web Design)
第二个问题:动态设置高度和宽度一致
有两种方法,一种是用js动态设置,一种是直接用CSS设置
先看下html代码
-
some text
-
some text
-
some text
公用的CSS
ul,li{
list-style: none;
}
* {
margin: 0;
padding: 0;
outline: 0
}
body {
margin: 0;
padding: 0;
-webkit-appearance: none;
font-family: “Helvetica Neue”, Helvetica, Arial, sans-serif;
font-size: 16px;
}
ul{
margin:10px;
}
.container {
display: inline-block;
position: relative;
width: 32%;
text-align: center;
}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24用js动态设置
var cw = $(‘.dummy’).width();
$(‘.dummy’).css({‘height’:cw+’px’});
$(window).resize(function() {
var cw = $(‘.dummy’).width();
$(‘.dummy’).css({‘height’:cw+’px’});
});
1 2 3 4 5 6用CSS设置
.dummy {
padding-top: 100%;
width: 100%;
background: #333333;
}
1 2 3 4 5CSS设置padding-top的原理:Use CSS to Specify the Aspect Ratio of a Fluid Element
/———————————————————
然后尝试对图片设置高度等于动态宽度
js方法很简单,跟上面的方法基本相同
-
some text
-
some text
-
some text
.container {
display: inline-block;
position: relative;
width: 32%;
text-align: center;
}
.container img{
width: 100%;
height:100%;
}
1 2 3 4 5 6 7 8 9 10var cw = $(‘.dummy’).width();
$(‘.dummy’).css({‘height’:cw+’px’});
$(window).resize(function() {
var cw = $(‘.dummy’).width();
$(‘.dummy’).css({‘height’:cw+’px’});
});
1 2 3 4 5 6CSS方法
-
some text
-
some text
-
some text
.container {
display: inline-block;
position: relative;
width: 32%;
text-align: center;
}
.dummy{
padding-top: 100%;
width: 100%;
background:url(images/test_3.wf) no-repeat;
-webkit-background-size: 100%;
background-size: 100%;
}
1 2 3 4 5 6 7 8 9 10 11 12 13通过设置background可以实现。
div包含img的方法没有试验成功,以后继续尝试
/————————————-
还有一个问题,怎么设置div和img之间的padding,又能保证div宽度是屏幕宽度的三分之一?
查看更多关于【便民服务】的文章