項目中有時候會遇到這個問題:一行有3個div,希望這3個div平分屏幕寬度,並且高度等於寬度。
第一個問題:平分屏幕寬度
可以對div設置百分比寬度,而不是直接用px寬度,這裡用到了響應式設計的思想,可以參考這篇文章:自適應網頁設計(Responsive Web Design)
第二個問題:動態設置高度和寬度一致
有兩種方法,一種是用js動態設置,一種是直接用CSS設置
先看下html代碼
<ul>
<li class=”container”>
<div class=”dummy”>
</div>
<div class=”element”>
some text
</div>
</li>
<li class=”container”>
<div class=”dummy”>
</div>
<div class=”element”>
some text
</div>
</li>
<li class=”container”>
<div class=”dummy”>
</div>
<div class=”element”>
some text
</div>
</li>
</ul>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
公用的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%; /* 1:1 aspect ratio */
width: 100%;
background: #333333;
}
- 1
- 2
- 3
- 4
- 5
CSS設置padding-top的原理:Use CSS to Specify the Aspect Ratio of a Fluid Element
/———————————————————
然後嘗試對圖片設置高度等於動態寬度
js方法很簡單,跟上面的方法基本相同
<ul>
<li class=”container”>
<img src=”images/test_1.jpg”/>
<div class=”element”>
some text
</div>
</li>
<li class=”container”>
<img src=”images/test_2.jpg”/>
<div class=”element”>
some text
</div>
</li>
<li class=”container”>
<img src=”images/test_3.jpg”/>
<div class=”element”>
some text
</div>
</li>
</ul>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
.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
- 10
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方法
<ul>
<li class=”container”>
<div class=”dummy”>
</div>
<div class=”element”>
some text
</div>
</li>
<li class=”container”>
<div class=”dummy”>
</div>
<div class=”element”>
some text
</div>
</li>
<li class=”container”>
<div class=”dummy”>
</div>
<div class=”element”>
some text
</div>
</li>
</ul>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
.container {
display: inline-block;
position: relative;
width: 32%;
text-align: center;
}
.dummy{
padding-top: 100%; /* 1:1 aspect ratio */
width: 100%;
background:url(images/test_3.jpg) 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寬度是屏幕寬度的三分之一?
原創文章,作者:投稿專員,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/250300.html
微信掃一掃
支付寶掃一掃