網頁布局中經常要定義元素的寬和高。但很多時候我們希望元素的大小能夠根據窗口或子元素
自動調整,這就是pc自適應。
自適應的優點:
元素自適應在網頁布局中非常重要,它能夠使網頁顯示更靈活,可以適應在不同設備、不同窗口和不同分辨率下顯示。
元素寬度設置為100%。(塊元素寬度默認為100%)
或者不設置寬度(width);(寬度是父元素的寬度)
1)自適應元素高度:height:auto;或者不設置;(是子元素撐開父元素的高度)
?
2)元素高度自適應窗口高度
設置方法:html,body{height:100%;}
注:如果設置子元素的高度跟隨父元素的高度變化而變化,那么父元素必須有高度。
min-height屬性:最小高度;(IE6瀏覽器不識別該屬性) ?
hack1:min-height:value;_height:value; ?
hack2:min-height:value; height:auto!important;height:value;
當子元素有浮動并且父元素沒有高度的情況下父元素會出現高度塌陷
hack1:給父元素添加聲明overflow:hidden;(觸發一個BFC)
hack2: 在浮動元素下方添加空div,并給該元素添加 聲明:div{clear:both; height:0; overflow:hidden;}
hack3:萬能清除浮動法
選擇符:after {
content: "";
clear: both;
display: block;
height: 0;
overflow: hidden;
visibility: hidden;
}
visibility:hidden;和display:none;的區別:
visibility:hidden;屬性會使對象不可見,但該對象在網頁所占的空間沒有改變,等于留出了一塊空白區域,而 display:none屬性會使這個對象徹底消失不顯示,也不再占用位置。
1)、::after : 與content屬性一起使用,定義在對象后的內容。
語法:選擇符::after{content:”文字”;}
選擇符::after{content:url(圖片路徑);}
如:div::after{content:url(logo.jpg);}
div::after{content:"文本內容";}
2)、::before: 與content屬性一起使用,定義在對象前 的內容。
div::before{content:"在其前放內容";}
3)、::first-letter 定義對象內第一個字符的樣式。
說明:
*(該偽元素只能用于塊級元素)
4)、::first-line:定義對象內第一行的樣式。
*(該偽元素只能用于塊級元素。)
本文轉自知乎號:千鋒HTML5學院
家好,我是吉礻羊。
有人@我說不知道怎么寫自適應的網頁,今天就先不寫優化的了,我把寫自適應網頁的方法說下。
自適應的網頁
工具:dw網頁設計軟件;ps圖像處理軟件。
方法/步驟:
1,在<head></head>之間加入加入一行viewport標簽。
<meta name="viewport" content="width=device-width,initial-scale=1" />
viewport是網頁默認的寬度和高度,上面這行代碼的意思是,網頁寬度默認等于屏幕寬度(width=device-width),原始縮放比例(initial-scale=1)為1.0,即網頁初始大小占屏幕面積的100%。
由于大家使用的電腦分辨率不一樣,大小也不一樣,所以網頁會根據屏幕寬度調整布局,所以不能使用絕對寬度的布局,也不能使用具有絕對寬度的元素,對圖像來說也是這樣。
具體說,CSS代碼不能指定像素寬度:
width:xxx px;
只能指定百分比寬度:
width: xx%;
或者
width:auto;
2,字體也不能使用絕對大小(px),而只能使用相對大小(em)。
例如:
body {font: normal 100% Helvetica, Arial,sans-serif;}
上面的代碼指定,字體大小是頁面默認大小的100%,即14像素。
3,"自適應網頁"的實例:
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,height=device-height,inital-scale=1.0" />
<title></title>
<style>
body {
height: 800px;
}
.header {
width: 100%;
height: 15%;
background-color: aquamarine;
}
.leftside {
width: 20%;
height: 75%;
background-color: skyblue;
float: left;
}
.main {
float: right;
width: 80%;
height: 75%;
background-color: steelblue;
}
.footer {
clear: both;
width: 100%;
height: 10%;
background-color: darkgray;
}
</style>
</head>
<body >
<div class="header"></div>
<div class="leftside"></div>
<div class="main"></div>
<div class="footer"></div>
</body>
</html>
家都知道如果不給一個元素設定一個具體的height,它就會自動適應其內容的高度。但是如果我們希望width也有類似的行為,我們該怎么做呢?
下面是我們實際的HTML:
<body>
<p>Let’s assume we have some text here. Bacon ipsum dolor sit amet turkey veniam shankle, culpa short ribs kevin t-bone occaecat.</p>
<!--使用 <figure> 元素標記文檔中的一個圖像-->
<figure>
<img src="../img/adamcatlace.jpg" />
<!-- 使用 <figure> 元素標記文檔中的一個圖像。<figure> 元素帶有一個標題:-->
<figcaption>
The great Sir Adam Catlace was named after Countess Ada Lovelace, the first programmer ever.
</figcaption>
</figure>
<p>We also have some more text here. Et laborum venison nostrud, ut veniam sint kielbasa ullamco pancetta.</p>
</body>
最初的實際效果如下:
如果我們為figure添加一道邊框,在默認情況下,如下圖所示:
<style>
figure{
border: red solid 5px;
}
</style>
我們會發現邊框實際是跟著屏幕的寬度在變化的,但我們實際上想要的是讓figure這個元素跟它所包含的圖片一樣寬,并且使圖片水平居中于屏幕中心。
那么我們應該怎么解決呢?
方案1:float
<style>
figure{
border: red solid 5px;
float: left;
}
</style>
我們的確的到了想要的寬度,但是網頁的布局也混款了。
方案2:display: inline-block
<style>
figure{
border: red solid 5px;
display: inline-block;
}
</style>
我們得到了我們想要的寬度,但我們發現很難繼續完成水平居中的任務,我們需要:
<style>
body{
text-align: center;
}
p{
text-align: left;
}
figure{
border: red solid 5px;
display: inline-block;
}
</style>
但我們發現這樣很麻煩,我們首先對其父元素設置了text-align:center,然后又對其父元素的其他子元素又設置了text-align:left,就算是這樣,圖片的說明文字還是比圖片寬,很難看。
最終方案:
<style>
figure{
border: red solid 5px;
width: min-content;
margin: auto;
}
</style>
這個min-content的意思就是將這個元素寬度設置為這個容器內部最大的不可斷行的元素的寬度(即最寬的單詞、圖片或具有固定寬度的盒元素)。
*請認真填寫需求信息,我們會在24小時內與您取得聯系。