window對象的經常使用屬性css
//https://juejin.im/editor/drafts/5d54066b51882557c143c8af
location.host; //juejin.im 主機名+端口號
location.hostname; //juejin.im 主機名
location.port; //'' 端口號
location.pathname; //請求的路徑 /editor/drafts/5d54066b51882557c143c8af
location.href; //完整的URL //https://juejin.im/editor/drafts/5d54066b51882557c143c8af
location.protocol;//https: URL協議
location.search; //'' 返回URL的查詢部分
複製代碼
//localStorage
localStorage.setItem('name','kk');//存儲
localStorage.getItem('name'); //獲取
//sessionStorage
sessionStorage.setItem('lastname','smith');
sessionStorage.getItem('lastname');
複製代碼
window的經常使用方法html
document經常使用的屬性html5
經常使用方法css3
src:指向的是外部資源的位置,在請求src資源時會將其指向的資源下載並應用到文檔內,例如js腳本,img圖片和frame等元素。當瀏覽器解析到該元素時,會暫停其餘資源的下載和處理,直到將該資源加載編譯完(這就是爲何js腳本要放在底部而不是頭部) web
href指向的是網絡資源所在位置,創建和當前文檔之間的聯繫,當瀏覽器解析到該元素時,會並行下載資源而且不會暫停對當前文檔的處理。這就是爲何建議用<link href='xx.css'>來加載css文件 chrome
src是引入插入,src的內容是頁面必不可少的部分canvas
href是引用,是與該頁面有關聯瀏覽器
從屬關係的區別:緩存
加載順序的區別:性能優化
權重區別:
<img src='#' alt='無圖片' title='美圖' />
複製代碼
當顯示不出圖片時,會顯示alt信息,放上去會出現title信息。
當圖片正常顯示時,不會出現alt信息,鼠標放上去會出現title信息。
repaint是重繪,reflow是迴流
repaint是對某個元素進行重繪,reflow是對整個頁面進行重排,也就是頁面全部DOM元素從新渲染。
迴流必定會致使重繪,反過來不必定
從性能優化方面,reflow比repaint性能消耗大
觸發repaint:
觸發reflow(改變頁面佈局和幾何信息)
瀏覽器渲染過程:
因爲瀏覽器有優化機制,瀏覽器會維護一個隊列,將引發迴流重繪的操做都放入這個隊列,等達到必定數量再清空隊列,進行一個批處理。這樣就會讓屢次的迴流、重繪變成一次迴流重繪。
可是獲取佈局信息時,會強制隊列刷新觸發迴流重繪來返回正確的值,好比訪問如下屬性:
offsetWidth、offsetHeight、offsetTop、offsetLeft
scrollTop、scrollLfet、scrollWidth、scrollHeight
clientTop、clientLeft、clientWidth、clientHeight
getComputedStyle()
getBoundingClientRect()
複製代碼
一、批量修改DOM
因爲有瀏覽器優化機制,因此上面的操做效果不受很明顯
複製代碼
二、避免觸發同步佈局事件
當咱們訪問元素的一些屬性時,會強制隊列刷新,進行強制同步佈局。好比:
function initP() {
for (let i = 0; i < paragraphs.length; i++) {
paragraphs[i].style.width = box.offsetWidth + 'px';
}
}
複製代碼
在每次循環的時候,都讀取了box的一個offsetWidth屬性值。這就致使了每一次循環的時候,瀏覽器都必須先使上一次循環中的樣式更新操做生效,才能響應本次循環的樣式讀取操做。每一次循環都會強制瀏覽器刷新隊列。
能夠優化爲:
const width = box.offsetWidth;
function initP() {
for (let i = 0; i < paragraphs.length; i++) {
paragraphs[i].style.width = width + 'px';
}
}
複製代碼
三、避開回流重繪,使用CSS3硬件加速
使用css3來硬件加速的原理是:新建合成層。
做用:定義文檔類型,告知瀏覽器解析器有什麼文檔標準解析這個文檔。
<!DOCTYPE>位於html文檔的第一行,處於全部標籤以前。
<!DOCTYPE>不屬於HTML標籤
<!DOCTYPE>不區分大小寫,沒有結束標籤
HTML5須要寫爲<!DOCTYPE html>。
當DOCTYPE不存在或格式不正確會致使文檔以兼容模式呈現。
meta標籤可分爲兩大部分,http-equiv和name
<meta http-equiv='content-Type' content='text/html' charset='UTF-8'>
標註網頁的做者:<meta name='author' content='jack'>
頁面關鍵詞,用於被搜索引擎收錄 <meta name='description' content='新聞中心,包含有時政新聞、國內新聞、國際新聞'
<base>爲頁面上全部相對連接規定默認URL或默認目標
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>菜鳥教程(runoob.com)</title>
<base href="//www.runoob.com//images/" target="_blank">
</head>
<body>
<p><img src="logo.png" > - 注意這裏咱們設置了圖片的相對地址。能正常顯示是由於咱們在
head 部分設置了 base 標籤,該標籤指定了頁面上全部連接的默認 URL,
因此該圖片的訪問地址爲 "http://www.runoob.com/images/logo.png"</p>
<p><a href="//www.runoob.com/">runoob.com</a> - 注意這個連接會在新窗口打開,即使它沒有 target="_blank" 屬性。
由於在 base 標籤裏咱們已經設置了 target 屬性的值爲 "_blank"。</p>
</body>
</html>
複製代碼
A、 area
B、 form
C、 base
D、 iframe
答案:D
html5主要是關於圖像、位置、存儲、多任務等功能的增長。
新特性:
移除的元素:
如何支持html5新標籤
在用戶沒有與因特網鏈接時,能夠正常訪問站點或應用,在用戶與因特網鏈接時,更新用戶機器上的緩存文件。
原理:
HTML5的一個新特性:離線存儲,經過將須要離線存儲在本地的文件列在一個manifest配置文件中。
怎麼用?
在HTML文件的頭部加上manifest屬性,屬性值爲建立的.appcache文件
<!DOCTYPE HTML>
<html manifest='cache.manifest'> ... </html>
複製代碼
cache.manifest文件的書寫方式,就像下面這樣:
CACHE MANIFEST
#v0.11 //版本號,用於區分更新後的.manifest文件
CACHE:
##在這下面寫須要離線緩存的資源文件,因爲包含manifest文件的頁面將自動離線存儲,因此不須要列出來
js/app.js
css/style.css
NETWORK:
##在這下面列出只有在線狀況才能訪問的資源,他們不會被離線存儲。
##但若是在CACHE和NETWORK都有相同的資源,那這個資源仍是會被離線存儲,CACHE的優先級更高
resourse/logo.png
FALLBACK:
##FALLBACK表示若是訪問第一個資源失敗,那就使用第二個資源來替換
/ /offline.html
##這句的意思是當訪問根目錄下任何一個資源失敗了,那麼就去訪問offline.html。
複製代碼
瀏覽器怎麼解析manifest文件呢?
分兩種狀況
在線的狀況下,瀏覽器發現HTML頭部有manifest文件,就會請求manifest文件。此時若是是第一次訪問則沒有緩存過,那就會根據manifest文件的內容下載對應的資源並離線緩存。
若是不是第一次訪問,且資源已經離線存儲,瀏覽器會先使用離線存儲的資源顯示頁面,而後瀏覽器再去比對新的manifest文件,若是文件沒有發生變化,則不作任何操做。若是發生變化,則會從新下載新的資源並存儲下來,等到下一次打開頁面才生效。
若是是離線狀況,瀏覽器就直接根據離線存儲的資源顯示頁面。
資料
cookie
storage
共同點:
數據有效時間不一樣
做用域不一樣:
iframe通常用來包含別的網站的內容
label標籤是用來定義表單控制間的關係,當點擊label標籤時,會自動將焦點轉到和標籤相關的表單控件(<input>)
##第一種寫法
<label>
userName:<input type="text" name='userName'/>
</label>
##第二種寫法,使用for屬性來創建於表單的聯繫
<label for='name'>userName</label>
<input id='name' type="text" name='userName'/>
複製代碼
有兩個屬性值,on和off。
autocomplete屬性規定表單輸入的字段是否開啓自動完成功能。 若開啓,當用戶在輸入時,瀏覽器會根據以前輸入過的值顯示出來。
autocomplete屬性適用於如下的<input>類型:text、search、url、tel、email、password、range、color、datepickers
event.target返回觸發事件的元素
event.currentTarget返回綁定事件的元素
事件委託:將事件綁定在父元素上,利用事件的冒泡,從而父元素可以處理子元素的事件響應
好處:
<button onmouseover=‘myMouseOver’ onmouseout='myMouseOut'>click Me one</button>
<button onmouseenter=‘myMouseEnter’ onmouseleave='myMouseLeave'>click Me two</button>
複製代碼
當被選元素沒有子元素時,兩個事件沒有區別
blur、load、unload、focus、mouseenter、mouseleave:不會
click、focusin、focusout、input、keydown、keyup、mousedown、mouseup、mouseout、mouseover、scroll、wheel、select
因爲HTTP協議是一個請求-響應協議,因此就算HTTP協議是創建在TCP協議(全雙工)之上,這種請求-應答機制會限制了全雙工通訊。
因此html5新增了WebSocket協議—— 在單個TCP鏈接上進行全雙工通訊的協議,目的是在瀏覽器和服務器之間創建一個不受限的雙向通訊的通道--全雙工通訊,客戶端和服務端均可以主動向對方發送消息。
如何發起WebSocket鏈接
一、客戶端首先向服務器發送一個HTTP請求,幷包含一些附加頭信息:Connection:upgrade;Upgrade:WebSocket。代表這是一個申請協議升級的HTTP請求。
二、服務端解析這些附加頭信息以後產生應答信息返回給客戶端,而後WebSocket鏈接就創建起來了。
三、鏈接創建以後,雙方就能夠基於TCP鏈接互相交換數據,無需瀏覽器發送請求後,服務端響應後才返回數據。這個鏈接會持續到某一方主動關閉鏈接。
WebSocket的特色
一、沒有同源限制,客戶端能夠與任何服務器通訊。
二、數據格式輕量,性能開銷小,通訊高效。
三、創建在TCP協議之上
四、能夠發送文本、二進制文件
五、一次握手,創建全雙工通訊
一、WebSocket
二、localStorage
localStorage是多個同源標籤頁共享的存儲空間(sessionStorage是會話級的存儲空間,每一個標籤頁之間都是獨立的)
如何實現?
當localStorage在另外一個頁面被添加、修改、刪除時會觸發storage事件,因此能夠在當前頁面監聽事件。
三、SharedWorker
被多個window共同使用,但必須保證這些標籤頁都是同源的(相同的協議,主機和端口號)
let worker = new SharedWorker('worker.js')
複製代碼
let p=document.querySelector(".p");
console.log(p.innerHTML); //我是p<span>我是span</span>
console.log(p.innerText); //我是p
console.log(p.textContent); //我是p我是span
複製代碼
innerHTML:返回調用元素的全部子節點(包括註釋、元素、文本節點)
innerText:返回調用元素的全部文本內容,包括子節點的文本,受樣式影響
textContent:返回調用元素的全部文本內容,忽略樣式,即便設爲不可見仍能獲取到
綜上:
line-height是能夠繼承的
visibility:hidden 雖不可見但仍佔據空間。初次渲染頁面時會被渲染。
display:none 不可見也不佔據空間。不會被渲染。
CSS盒子模型具備內容(content)、填充(padding)、邊框(border)、邊界(margin)
一般咱們說的width、height指的是內容(content)的寬高,除了IE.
一個盒子模型的寬=width+padding寬+border寬
一個盒子模型的高=height+padding高+border高
對於IE:
width指的是:border+padding+內容的寬
一個盒子的寬度=width+左右margin
字體:font-family,font-size,font-style,font-weight,font-stretch,font-size-adjust
文本系列:text-indent,text-align,line-height,word-spaceing,letter-spacing,text-transform,direction,color;
經常使用的屬性:border-box、content-box、inherit
做用:
content-box(默認):設定的寬高度分別是內容(content)區域的寬高,在內容區域外繪製padding和border
border-box:padding和border在已設定的寬高內進行繪製,內容(content)的寬高度等於寬高度減去padding和border的寬高
定義背景從哪裏開始繪製
<style type="text/css">
.testClass{
color:blue !important;
}
</style>
<body>
<div class="testClass" style="color:red;">
測試Css中的Important //顯示藍色
</div>
</body>
複製代碼
.testClass{
color:blue !important;
color:red;
}
#ie6下會顯示爲紅色
#其餘瀏覽器都顯示爲藍色
複製代碼
改爲如下形式則都顯示爲藍色
.testClass{
color:blue !important;
}
.testClass{
color:red;
}
複製代碼
#parent{
color: blue !important;
color: red;
}
.son{
color: green; //子類的字體顯示綠色
}
複製代碼
採用flex佈局的元素稱爲flex容器,flex容器默認有兩根軸,分別是水平方向的主軸和垂直方向的交叉軸。子元素默認沿着主軸方向排列。
設置在容器上的屬性有:
設置在子元素上的屬性有:
一個塊級元素若是沒有設置高度height,那麼其高度就是由裏面的子元素撐起。若是子元素浮動,就會脫離標準文檔流,致使父元素沒有高度。若是不清除浮動,父元素會出現沒有高度,設置border和background都不能解析,並且後面的非浮動元素會被浮動元素所遮擋。
方法:
父元素div定義一個僞元素::after,父元素添加zoom:1屬性(兼容IE8如下不支持:after僞類)-- 推薦方法
<style type="text/css">
.div1{background:#000080;border:1px solid red;}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮動代碼*/
.clearfloat:after{display:block;clear:both;content:"";visibility:hidden;height:0} //是visibility不是display
.clearfloat{zoom:1}
</style>
<div class="div1 clearfloat">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
複製代碼
在父元素的結尾處添加一個空div標籤,並清除浮動
<style type="text/css">
.div1{background:#000080;border:1px solid red}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
/*清除浮動代碼*/
.clearfloat{clear:both}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
<div class="clearfloat"></div>
</div>
<div class="div2">
div2
</div>
複製代碼
經過觸發BFC的方式,能夠實現清除浮動效果 (BFC)。能夠給父級添加: overflow爲 hidden|auto|scroll(則overflow不爲visible)。必須設置寬度或zoom:1,不能定義height
<style type="text/css">
.div1{background:#000080;border:1px solid red;/*解決代碼*/width:98%;overflow:hidden}
.div2{background:#800080;border:1px solid red;height:100px;margin-top:10px;width:98%}
.left{float:left;width:20%;height:200px;background:#DDD}
.right{float:right;width:30%;height:80px;background:#DDD}
</style>
<div class="div1">
<div class="left">Left</div>
<div class="right">Right</div>
</div>
<div class="div2">
div2
</div>
複製代碼
父元素div定義高度
父元素也一塊兒浮動
1、水平居中
1)行內元素:把行內元素包裹在一個屬性display:block的父層元素中,而且在父層元素添加以下屬性:
.parent{
text-align:center;
}
複製代碼
2)塊級元素:
.item{
margin: 10px auto; //垂直方向能夠隨意設置
}
複製代碼
3)多個塊狀元素:使用flex佈局
.parent {
display: flex;
justify-content: center;
}
複製代碼
2、垂直居中
1)單行的行內元素:設置子元素的height和line-height和父元素同樣的高度
.parent {
background: #222;
height: 200px;
}
/* 如下代碼中,將 a 元素的 height 和 line-height 設置的和父元素同樣高度便可實現垂直居中 */
a {
height: 200px;
line-height:200px;
color: #FFF;
}
複製代碼
2)多行行內元素:在父容器設置display: table-cell 和 vertical-align: middle
.parent {
background: #222;
width: 300px;
height: 300px;
/* 如下屬性垂直居中 */
display: table-cell;
vertical-align: middle;
}
複製代碼
3)已知高度的塊狀元素
.item{
position:absolute;
height:100px;
top:50%;
margin-top:-50px; /*爲自身高度的一半*/
}
複製代碼
4)未知高度的塊狀元素
.item{
position:absolute; /*子絕父相*/
top:50%;
transform:translateY(-50%); /*爲自身高度的一半*/
}
複製代碼
3、水平垂直居中
1)flex佈局方案1
.parent{
display: flex;
justify-content: center;
align-items: center;
/* 注意這裏須要設置高度來查看垂直居中效果 */
background: #AAA;
height: 300px;
}
複製代碼
flex佈局方案2
.parent{
background: #DD4A68;
width: 200px;
height: 200px;
display: flex;
}
.son{
width: 50px;
height: 50px;
background: #4b67af;
margin: auto;
}
複製代碼
2)已知寬高度的解決方案1(不需計算)
.parent{
width:300px;
height:300px;
position:relative;
}
.son{
width:100px;
height:100px;
position:absolute;
top:0;
left:0;
bottom:0;
right:0;
margin:auto; /*會根據父子盒子寬高度去計算*/
}
複製代碼
3)已知寬高度的解決方案2(需計算)
.parent{
width:300px;
height:300px;
position:relative;
}
.son{
width:100px;
height:100px;
position:absolute;
top:50%; /*相對父盒子的高度的50%*/
left:50%;
margin-top:-50px; /*自己高度的一半*/
margin-left:-50px;
}
複製代碼
4)未知寬高度:使用CSS3的transform屬性
.parent{
width:300px;
height:300px;
position:relative;
}
.son{
position:absolute;
top:50%;
left:50%;
transform:translate(-50%,-50%);/*相對自己已有寬高度的50%移動*/
}
複製代碼
5)使用display:table-cell
.parent{
width:300px;
height:300px;
position:table-cell; //相似td/th
text-align:center; //水平居中
vertical-align:middle; //垂直居中
}
.son{
width:100px;
height:100px;
display:incline-block; //行內塊級
}
複製代碼
relative屬於正常的文檔流,absolute脫離文檔流
定位原點relative是相對自己在文檔流中的位置偏移,本來佔據的空間仍然保留。
absolute是相對最近的定位流父元素(除了static)的位置進行偏移
svg
<svg width="100%" height="100%" >
<circle cx="300" cy="60" r="50" stroke="#ff0" stroke-width="3" fill="red" />
</svg>
複製代碼
canvas
一、外聯樣式/外部樣式表
二、內部樣式表(在head標籤裏定義style標籤)
三、行內樣式/內聯樣式(在html元素定義style屬性)
四、使用@import引入其餘css文件
僞類:用於選擇DOM樹以外的信息—— 包含那些匹配指定狀態的元素:visited,:hover,:active,:link。或是不能用簡單選擇器進行表示的信息,須要邏輯計算的—— :first-child,:first-of-type,:target
僞元素:DOM樹上沒有定義的虛擬元素,不一樣於其餘選擇器,它不以元素爲最小選擇單元,它選擇的是元素指定內容—— ::before,::after,::selection(表示選擇元素被選中的內容)
注意
p:first-child表示選擇的元素既是p元素,又是其父元素的第一個子元素。
p:first-of-type表示選擇的元素既是p元素,也是其父元素的第一個子元素
新增僞類
一、id選擇器
二、類選擇器
三、標籤選擇器
四、兄弟選擇器(h1+p)
五、子選擇器(ul>li)
六、後代選擇器
七、通配符選擇器(*)
八、屬性選擇器
九、僞類、僞元素選擇器
優先級:!important>id>class>tag,!important優先級比內聯樣式高
E: nth-child(n):n必須是>0的數才能匹配到元素E,可是n是從0開始計算。n也能夠是關鍵詞odd(奇數)、even(偶數)
E:first-child, :last-child
E:only-child:匹配父元素中只有這一個子元素E,即惟一子元素
E:empty:選擇沒有任何內容的元素E
##讓沒有任何內容的p隱藏
p:empty {
display: none;
}
複製代碼
E:not(selection):選擇除了selection以外的元素E
input:not[type='submit']{
border:1px solid red;
##給表單中除submit按鈕以外的input加邊框
}
複製代碼
E[attr^='val']:選擇匹配元素E,屬性attr以val開頭
E[attr$='val']:以val結尾
E[attr*='val']:含義val
E:target:URL 帶有後面跟有錨名稱 #,指向文檔內某個具體的元素。這個被連接的元素就是目標元素(target element),當點擊url後,被連接元素就會出現樣式
E:enabled,E:disabled:有些表單元素可用/不可用
E:checked:單選和複選按鈕都有選中和未選中狀態,checked表示選中狀態
E:read-only,E:read-write:指定可讀狀態的元素/非只可讀
E::before,E::after:生成的元素只存在於頁面中,不存在dom之中
:root:等同於根元素
color、font-size、font-family、ul、li、dl、dd、dt
flex-grow:是利用剩餘空間(若是有的話)進行計算分配
flex-shrink:若是全部項目的flex-shrink屬性都爲1,當空間不足時,都將等比例縮小。若是一個項目的flex-shrink屬性爲0,其餘項目都爲1,則空間不足時,前者不縮小。負值無效
flex-basic:屬性定義了在分配多餘空間以前,項目佔據的主軸空間(main size)。瀏覽器根據這個屬性,計算主軸是否有多餘空間。它的默認值爲auto,即項目的原本大小。
注意: 設爲flex佈局以後,子元素的float、clear和vertical-align屬性將失效
只要邊框足夠大,並且盒子沒有寬高度,四個頂點就會很靠近—— 四角板,而後將其餘三條邊框的顏色設爲透明
四角板:
三角形:在上面的基礎上設置其中三條邊框的顏色透明
Formatting Context:一個決定如何渲染文檔的容器,對於不一樣類型的box(類型由元素的類型和display決定),會參與不一樣的類型的Formatting Context
Formatting Context可分爲:Block Formatting Context(BFC)、inline Formatting Context(IFC)
BFC常常用於清除浮動、解決垂直方向margin重疊的問題
box的類型:
BFC:塊級格式化上下文,是一個獨立的渲染區域/容器,只有block-level box參與。它規定了內部的block-level box如何佈局,而且不會影響外部的元素。
BFC佈局規則:
一、內部的box會以垂直方向分佈,由於是block-level box
二、內部box之間在垂直方向的距離由margin決定,屬於同一個BFC的兩個相鄰盒子的margin會發生重疊(則垂直方向的margin)
三、每一個子元素margin box的左邊與包含塊border box的左邊想接觸,即便存在浮動子元素,非浮動的元素就算處於浮動元素後面,也會貼緊包含塊的左邊。
四、BFC的區域不會與外部的float box重疊(可用來清除浮動)
五、BFC就是頁面上的一個隔離的獨立容器,容器裏面的子元素不會影響到外面的元素。
六、計算BFC高度時,浮動子元素的高度也會參與計算
哪些元素會生成BFC:
一、非浮動元素被浮動元素覆蓋
二、內部盒子浮動,父盒子高度塌陷的問題(脫離文檔的定位流元素也會致使父盒子高度塌陷,但不能經過BFC解決)
三、垂直方向上,相鄰盒子margin重疊的問題
一、flex佈局
二、子絕父相,設置自適應的div爲絕對定位,top:100px;bottom:0;left:0,(父盒子須要設置高度)
三、使用calc()計算高度:height:calc(100%-100px),計算父盒子剩下的高度
div標籤能自動填滿父元素的寬度,高度就只能由本身的子元素撐起
一、固定盒子右浮動,自適應盒子 overflow: hidden;建立一個BFC(切記浮動的元素要寫在非浮動元素的前面,這樣纔會在一行)
二、父容器width:100%;display:table;子容器都爲display:table-cell;給固定寬度的盒子設定width
三、固定寬度的盒子右浮動,自適應盒子設置margin-right=固定盒子的寬度,可是浮動元素的標籤必須寫在另外一個非浮動的前面(必須使用div標籤,由於div會自動填滿父標籤的寬度)
四、固定盒子右浮動,自適應盒子使用calc計算寬度,width:calc(100%-固定盒子寬度)
.parent{
overflow: hidden; /*造成BFC,BFC的高度會計算浮動元素的高度*/
}
.son1{
float: left; /*兩欄都向左浮動,才能緊貼在一塊兒*/
height: 100%;
width: 200px;
padding-bottom: 9999px; /*左邊一欄會變長*/
margin-bottom: -9999px; /*將超過包圍盒container的長度剪掉*/
background: #4b67af;
}
.son2{
float: left;
width: 100px;
height: auto; /*右邊一欄設置高度auto*/
background: #DD4A68;
}
<div class="parent">
<div class="son1">鵝鵝鵝曲項向天歌</div>
<div class="son2">牀前明月光,疑是地上霜,舉頭望明月,低頭思故鄉</div>
</div>
複製代碼
設置width、overflow:hidden,white-space:nowrap(不換行),text-overflow:ellipsis
響應式設計:一個網頁能兼容多個終端,而不是爲每一個終端都作一個特定的版本。
原理:經過媒體查詢檢測不一樣的設備屏幕尺寸作處理
頁面頭部必須有 meta 聲明的 viewport。
<meta name='viewport' content='width=device-width, initial-scale=1.0'>
複製代碼
viewport:頁面的可視區域,手機瀏覽器一般把頁面放在一個虛擬的窗口viewport,這個虛擬的窗口通常比屏幕寬。上面即設置了頁面的可視區域和設備屏幕寬度同樣寬,初始縮放比例爲100%。 viewport
##若是想實現10px的字體
p{
font-size:10px;
transform:scale(0.8); //縮放比例0.8
}
複製代碼