整合營(yíng)銷服務(wù)商

          電腦端+手機(jī)端+微信端=數(shù)據(jù)同步管理

          免費(fèi)咨詢熱線:

          前端開(kāi)發(fā)總結(jié):Web前端的易錯(cuò)點(diǎn)和冷知識(shí),新人避坑

          前端開(kāi)發(fā)總結(jié):Web前端的易錯(cuò)點(diǎn)和冷知識(shí),新人避坑

          文介紹前端方面的冷知識(shí)或者一些易踩坑點(diǎn),防止大家踩坑。下面和千鋒廣州小編一起來(lái)看看吧!

          JavaScript

          所有對(duì)象都有 __proto__ 屬性,都指向創(chuàng)造對(duì)象的函數(shù)對(duì)象的 prototype。

          上傳文件要使用 formdata 包裝。

          Promise.prototype.catch 方法是 .then(null,rejection) 的別名。

          同一個(gè) EventTarget 注冊(cè)了多個(gè)相同的 EventListener,那么重復(fù)的實(shí)例會(huì)被拋棄。所以這么做不會(huì)使得 EventListener 被調(diào)用兩次,也不需要用 removeEventListener 手動(dòng)清除多余的EventListener,因?yàn)橹貜?fù)的都被自動(dòng)拋棄了。

          當(dāng)使用 addEventListener() 為一個(gè)元素注冊(cè)事件的時(shí)候,句柄里的 this 值是該元素的引用。其與傳遞給句柄的 event 參數(shù)的 currentTarget 屬性的值一樣,而 target 是直接接受事件的子元素。

          scrollIntoView() 使 div 底部滾動(dòng)到視窗。

          使用 const 的對(duì)象和數(shù)組的內(nèi)容是可以被修改的,但數(shù)據(jù)結(jié)構(gòu)不可變。

          在 webpack 里,所有的文件都是模塊。loader 的作用就是把文件轉(zhuǎn)換成 webpack 可以識(shí)別的模塊。

          關(guān)于事件循環(huán),執(zhí)行下一個(gè) task 之前總會(huì)清空 microtask。

          npm 新舊版本覆蓋可能會(huì)造成迷之問(wèn)題,這個(gè)時(shí)候可以試試 node_module 整個(gè)刪掉重裝。

          * 、 / 和 - 操作符都是數(shù)字運(yùn)算專用的。當(dāng)這些運(yùn)算符與字符串一起使用時(shí),會(huì)強(qiáng)制轉(zhuǎn)換字符串為數(shù)字類型的值。

          document.title 可以直接修改當(dāng)前 html 的標(biāo)題。

          利用對(duì)象淺拷貝修改對(duì)象,指向同一對(duì)象的兩個(gè)變量修改對(duì)象的效果一樣。

          腦洞題:1 和 2 只用一次的情況下怎么得到 4 答案:1<<2。

          連等賦值從右到左。

          compositionstart 事件觸發(fā)于一段文字的輸入之前(類似于 keydown 事件,但是該事件僅在若干可見(jiàn)字符的輸入之前,而這些可見(jiàn)字符的輸入可能需要一連串的鍵盤操作、語(yǔ)音識(shí)別或者點(diǎn)擊輸入法的備選詞)。

          void0(void后面加任何東西)用于生成一個(gè)絕對(duì)的 undefined(不會(huì)被重定義),但跟函數(shù)會(huì)有副作用

          注意 localStorage 保存的只能是字符串,所以是沒(méi)有 null 的。

          坑一個(gè):

          import 同步,require異步(待補(bǔ)充)。

          new() 做了些什么?

          stage 0 到 4 的含義:

          stage 0 is "i've got a crazy idea",

          stage 1 is "this idea might not be stupid",

          stage 2 is "let's use polyfills and transpilers to play with it",

          stage 3 is "let's let browsers implement it and see how it goes",

          stage 4 is "now it's javascript".

          Object.getOwnPropertyNames(obj).length===0 判斷 obj 是不是空對(duì)象。

          getBoundingClientRect() 用于獲取元素寬高以及距離頁(yè)面邊框距離,十分方便。

          && 的使用場(chǎng)景:左邊為真繼續(xù)執(zhí)行右邊,如 isDog&&bark()。

          || 的使用場(chǎng)景:左邊為假繼續(xù)執(zhí)行右邊,如 leti=value||defalutValue。

          Vue.js

          v-model 會(huì)自動(dòng) bind 一個(gè)值,其變量名為 value。

          多個(gè)特性的元素應(yīng)該分多行撰寫,每個(gè)特性一行。以下為 vscode 里 vetur 的設(shè)置:

          組件 destroy 時(shí)觸發(fā)自定義指令的 unbind,destory 的時(shí)機(jī):diff 之后的 patch,如 v-if,v-for(key不同時(shí),先銷毀原來(lái)的,再掛載新的(推測(cè)))

          自定義組件 v-model watch 自動(dòng)匹配(存疑

          組件的 data 屬性要用函數(shù)返回的原因:創(chuàng)建實(shí)例時(shí)如果 data 是一個(gè)對(duì)象的話,所有實(shí)例都會(huì)引用同一個(gè)對(duì)象,而對(duì)象返回不會(huì)有此問(wèn)題。在瀏覽器中可以這么做是因?yàn)楦鶎?shí)例只有一個(gè)。

          .vue 文件中使用 /deep/ 覆蓋子組件 css。

          GitHub

          從 commit 關(guān)閉 issues 的方法:commit 信息寫 Fixes#33,其他關(guān)鍵字還有 close closes closed fix fixesfixedresolve resolves resolved。

          git reset--soft HEAD^ 回退一次 commit。

          CSS

          div 的默認(rèn)寬度是父元素寬的 100%。

          逐幀動(dòng)畫 animation:animate-name3ssteps(每次循環(huán)的幀數(shù))infinite;:

          "Break out" of a parent's containing width to take the full screen of a page w/this nice utility class:

          行內(nèi)元素與下一個(gè)元素中間有空格(正常排版),會(huì)引起一些詭異的縫隙,常見(jiàn)的例如元素之間有間隔,或看起來(lái)空了一行(像加了padding)。

          pre 標(biāo)簽設(shè)置自動(dòng)換行:white-space:pre-wrap;。

          隱藏一個(gè)元素,同時(shí)讓這個(gè)元素的寬度可獲取:設(shè)置 overflow:hidden,可以根據(jù)元素高度裁剪視區(qū),設(shè)置 height:0;overflow:hidden。雖然文檔流中占用了位置,由于高度為 0,最終表現(xiàn)特征達(dá)到了我們期望的 display:none。此時(shí)該元素 clientHeight、 offsetHeight 為 0,但是 scrollHeight 是有值的。

          scrollHeight 是一個(gè)元素沒(méi)有滾動(dòng)條時(shí)的所有內(nèi)容高度,當(dāng)一個(gè)元素沒(méi)有滾動(dòng)條時(shí) scrollHeight===offsetHeight。

          當(dāng) Render Tree 中部分或全部元素的尺寸、結(jié)構(gòu)、或某些屬性發(fā)生改變時(shí),瀏覽器重新渲染部分或全部文檔的過(guò)程稱為回流。

          當(dāng)頁(yè)面中元素樣式的改變并不影響它在文檔流中的位置時(shí)(例如:color、background-color、visibility等),瀏覽器會(huì)將新樣式賦予給元素并重新繪制它,這個(gè)過(guò)程稱為重繪。

          回流必將引起重繪,重繪不一定會(huì)引起回流。

          移動(dòng)端優(yōu)化常用 CSS 屬性:

          @keyframes 的屬性要前后對(duì)應(yīng),否則不形成動(dòng)畫。

          img 元素圖像自適應(yīng)居中,與 background-size 效果一樣:

          <img/> 標(biāo)簽千萬(wàn)記得寫寬高,不然會(huì)花式塌陷。

          flex-grow 所在元素如果未定寬度的話,寬度會(huì)被子元素?fù)伍_(kāi)。

          一個(gè)英文單詞默認(rèn)不換行,無(wú)論多長(zhǎng),所以要設(shè)置 wordbreak。

          多行文字居中:

          safari 中控制慣性滾動(dòng) -webkit-overflow-scroll。

          滾動(dòng)條樣式可能使?jié)L動(dòng)條強(qiáng)制顯示(未確定)。

          flex 布局不換行加 flex-shrink:0; 實(shí)現(xiàn) div 不壓縮無(wú)限并排,可以用于 swiper 等場(chǎng)景。

          巧用貓頭鷹選擇器 *+* 。

          float 自帶 display:block。

          鼠標(biāo)禁用 .disabled{pointer-events:none;}。

          注意 :last-child 與 :last-of-type 的區(qū)別。

          ::after 表示法是在 CSS3 中引入的, :: 符號(hào)是用來(lái)區(qū)分偽類和偽元素的。支持CSS3的瀏覽器同時(shí)也都支持 CSS2 中引入的表示法 :after。

          父元素如果存在 transform 屬性,子元素的 position:fixed 屬性無(wú)效。

          less 中的 calc 問(wèn)題:height:calc(~"100% - 50px");。

          vh 在部分瀏覽器中包含地址欄部分,小心使用。

          VSCode

          alt + shift + 鼠標(biāo)點(diǎn)擊 縱向選擇。

          vetur 分號(hào)問(wèn)題:安裝 prettier,然后配置 "prettier.singleQuote":true,"prettier.semi":false。

          可以使用插件 document this 方便寫注釋。

          html tag 屬性分行 wrap_attributes:force。

          選定變量后按 F12 找到定義位置。

          其他

          魔法隧道用 webpack 代理會(huì) 502。

          在組件化編程中,悼念被同名組件浪費(fèi)了幾個(gè)鐘的 debug 時(shí)間[蠟燭]。

          局域網(wǎng)連不通的話,先試試,開(kāi)共享,關(guān)閉防火墻。

          局域網(wǎng)連不通的話,還可以試試,在 webpack.config.js 文件的 devServer 里加上 host:'0.0.0.0'。

          iOS 的回彈效果,動(dòng)的是 body 部分,html 是不動(dòng)的。

          學(xué)習(xí)一個(gè)語(yǔ)言之前先看規(guī)范。

          safari 的 formdata 只支持 append,其他方法需要 polyfill。

          rc 的意思是 run commands。

          導(dǎo)航欄高度 88px,標(biāo)簽欄高度 98px(iphone5和6常用)。

          關(guān)于 HTTP 304 Not Modified,簡(jiǎn)單來(lái)說(shuō),請(qǐng)求內(nèi)容沒(méi)有發(fā)生變化的時(shí)候,根據(jù)設(shè)置,服務(wù)器可能直接取緩存返回。

          Web前端開(kāi)發(fā)-CSS入門干貨01 、Web前端開(kāi)發(fā)-CSS入門干貨02 、Web前端開(kāi)發(fā)-CSS布局-盒子模型入門干貨 介紹了CSS重要基礎(chǔ)概念選擇器和字體系列、文本系列、背景系列樣式以及CSS布局中元素的盒子模型,下面介紹CSS布局中另外兩個(gè)重要應(yīng)用浮動(dòng)和定位。

          根據(jù)元素浮動(dòng)、定位的特性可以將CSS布局分為三種:標(biāo)準(zhǔn)流、浮動(dòng)流、定位流;

          其中標(biāo)準(zhǔn)流是利用塊級(jí)元素獨(dú)占一行、自上而下,行內(nèi)元素一行顯示、遇到阻礙自動(dòng)換行、自左向右的布局方式。

          1.浮動(dòng)

          (1)什么是浮動(dòng)

          元素脫離原先位置,不再占據(jù)空間,相對(duì)于未浮動(dòng)元素類似漂浮在其上面;

          浮動(dòng)元素具有了行內(nèi)塊元素特性,并實(shí)現(xiàn)貼邊布局。這里的邊可以是父級(jí)元素的邊也可以是同樣浮動(dòng)的兄弟級(jí)元素的邊。

          (2)浮動(dòng)解決的問(wèn)題

          改變塊級(jí)元素默認(rèn)的垂直布局方式,改為橫向布局。

          行內(nèi)塊樣式(display: inline-block;)也可以改變塊級(jí)元素的布局方式,但是不能靈活解決兩個(gè)塊級(jí)元素之間縫隙、不能靈活解決多個(gè)塊級(jí)元素分別實(shí)現(xiàn)左對(duì)齊、右對(duì)齊等問(wèn)題。當(dāng)然如果想要塊級(jí)元素隨意放置,那就要用到定位了。

          (3)浮動(dòng)的語(yǔ)法

          選擇器 {float:none/left/right},對(duì)選擇器選擇的元素實(shí)現(xiàn)不浮動(dòng)、左浮動(dòng)、右浮動(dòng)。

          (4)浮動(dòng)的典型應(yīng)用

          通過(guò)不浮動(dòng)的塊級(jí)元素+嵌套在其內(nèi)內(nèi)的浮動(dòng)元素,實(shí)現(xiàn)頁(yè)面各種布局。

          塊級(jí)元素實(shí)現(xiàn)縱向布局,浮動(dòng)的元素實(shí)現(xiàn)橫向布局。

          (5)因?yàn)楦?dòng)引出的問(wèn)題

          浮動(dòng)元素通常嵌套在一個(gè)不浮動(dòng)的元素內(nèi),進(jìn)行配合使用;所有浮動(dòng)元素的高以及外邊距之和不能超過(guò)那個(gè)不浮動(dòng)元素,否則出現(xiàn)重疊。

          那么當(dāng)嵌套的浮動(dòng)的子元素?cái)?shù)量不確定時(shí),那么父級(jí)元素的高度就不能確定。為了解決這個(gè)問(wèn)題,提出來(lái)不設(shè)置父級(jí)元素的高度,讓子元素的高度之和成為父元素高度的方式;然而浮動(dòng)的子元素具有脫離原先位置、不占空間的特點(diǎn),那么父元素的高度只會(huì)是0,在父元素之后的兄弟元素就會(huì)與上一個(gè)父元素內(nèi)浮動(dòng)元素發(fā)生重疊。為了解決這個(gè)問(wèn)題,提出來(lái)清除浮動(dòng)。

          (6)清除浮動(dòng)

          1)語(yǔ)法

          選擇器 {clear:right/left/both};清除選擇器選中的元素的右浮動(dòng)、左浮動(dòng)、左右浮動(dòng)。

          2)清除浮動(dòng)方式

          a)額外標(biāo)簽法

          添加一個(gè)與浮動(dòng)元素同級(jí)的空標(biāo)簽(塊級(jí)),并為其設(shè)置清除浮動(dòng)的樣式。

          <style>
          .one {float:left}
          .kongbq {clear:both} 
          </style>
          
          <div class="box">
          <div class="one"> </div>  
          <div class="kongbq"> </div>
          </div>

          b)父級(jí)元素添加overflow樣式(常用)

          語(yǔ)法:選擇器 {overflow:hidden}

          c)父級(jí)元素添加after偽元素樣式(常用)

          樣式如下:

          .clearfixry:after {
          content:"";
          display:block;
          height:0;
          clear:both;
          visibility:hidden;
          }
          .clearfixry { /*IE6、7專有*/
          *zoom:1;
          }

          d)父級(jí)元素添加雙偽元素(常用)

          樣式如下:

          .clearfixry:before,.clearfixry:after {
          content:"";
          display:table;
          }
          .clearfixry:after {
          clear:both;
          }
          .clearfixry { /*IE6、7專有*/
          *zoom:1;
          }

          2.定位

          (1)什么是定位

          將html元素放置在任意指定的位置,提高頁(yè)面布局的靈活性。

          (2)定位解決的問(wèn)題

          比如頁(yè)面?zhèn)冗吂潭ǖ墓ぞ邫凇⑤啿D

          (3)定位的實(shí)現(xiàn)方式

          利用定位模式+邊偏移,在樣式中設(shè)定定位模式,然后設(shè)定元素盒子模型邊偏移。

          1)邊偏移

          包括top、right、bottom、left四個(gè)分項(xiàng)。

          2)定位模式分類

          a)靜態(tài)定位(static):元素?zé)o偏移,也即元素本身的默認(rèn)布局方式。

          語(yǔ)法:選擇器 {position:static;}

          b)相對(duì)定位(relative):相對(duì)元素自身原先位置設(shè)置偏移。(常用)

          語(yǔ)法:選擇器 {position:relative;}

          需要注意的是設(shè)置了相對(duì)定位的元素仍舊實(shí)際占據(jù)位置

          c)絕對(duì)定位(absolute):相對(duì)于元素的擁有定位的父級(jí)(或者更高級(jí))元素進(jìn)行定位。(常用)

          語(yǔ)法:選擇器 {position:absolute;}

          需要注意的(1)設(shè)置的絕對(duì)定位的元素的參考依據(jù)是有定位模式的父級(jí)或者更高級(jí)元素的。

          (2)設(shè)置了絕對(duì)定位的元素會(huì)有浮動(dòng)效果,即不再占有位置。

          d)固定定位(fixed):相對(duì)于瀏覽器可視區(qū)域,在某個(gè)位置固定不動(dòng)。(常用)

          語(yǔ)法:選擇器 {position:fixed;}

          需要注意的(1)設(shè)置的固定定位的元素的參考依據(jù)瀏覽器當(dāng)前可視窗口。

          (2)設(shè)置了固定定位的元素會(huì)有浮動(dòng)效果,即不再占有位置。

          e)粘性定位(sticky):被認(rèn)為是相對(duì)定位和固定定位的混合。元素在跨越特定偏移前為相對(duì)定位,之后為固定定位。

          語(yǔ)法:選擇器 {position:sticky; top:10px;}

          需要注意的是(1)粘性定位一定要設(shè)置邊偏移(任何邊都可行),否則其功能和相對(duì)定位相同。

          (2)設(shè)置的粘性定位的元素的參考依據(jù)瀏覽器當(dāng)前可視窗口。

          (3)設(shè)置的粘性定位的元素仍舊實(shí)際占據(jù)位置


          #學(xué)問(wèn)分亨官##閃光時(shí)刻二期##閃光時(shí)刻第二期主題征文#

          TML

          1. 基本概念

          • HTML 是網(wǎng)頁(yè)內(nèi)容的載體。內(nèi)容就是網(wǎng)頁(yè)制作者放在頁(yè)面上想要讓用戶瀏覽的信息,可以包含文字、圖片、視頻等。

          • CSS 樣式是表現(xiàn)。比如,標(biāo)題字體、顏色變化,或?yàn)闃?biāo)題加入背景圖片、邊框等,所有這些用來(lái)改變內(nèi)容外觀的東西稱之為表現(xiàn)。

          • JavaScript 是用來(lái)實(shí)現(xiàn)網(wǎng)頁(yè)上的特效效果。如:鼠標(biāo)滑過(guò)彈出下拉菜單,或鼠標(biāo)滑過(guò)表格的背景顏色改變,還有焦點(diǎn)新聞(新聞圖片)的輪換。有動(dòng)畫的,有交互的一般都是用 JavaScript 來(lái)實(shí)現(xiàn)的。

          2.常用標(biāo)簽

          • 強(qiáng)調(diào)語(yǔ)氣:<em>是斜體,<strong>是加粗

          • 引用:<q>短文本引用,<blockquote>長(zhǎng)文本引用

          • 換行 <br />

          • 水平橫線 <hr />

          • 空格 &nbsp;

          • 表格 <table><tbody>

          • 加上后表格內(nèi)容全部下載完才會(huì)顯示

          • <tr>

          • <td>

          • 表格表頭 <th>

          • 標(biāo)題 <caption>

          • 超鏈 <a>

          • 例子:<a href="目標(biāo)網(wǎng)址" title="鼠標(biāo)滑過(guò)顯示的文本">鏈接顯示的文本</a>

          • 新標(biāo)簽打開(kāi):target="_blank"

          • 圖片 <img>,圖像可以是 GIF,PNG,JPEG 格式的圖像文件

          • 例子:<img src="圖片地址" alt="下載失敗時(shí)的替換文本" title="提示文本">

          • 表單 <form>

          • 文本域 <textarea>

          • 例子 <textarea rows="行數(shù)" cols="列數(shù)">文本</textarea>

          • cols 多行輸入域的列數(shù);rows 多行輸入域的行數(shù)。這兩個(gè)屬性可用 CSS 樣式的 width 和 height 來(lái)代替:col 用 width、row 用 height 來(lái)代替

          • 輸入框 <input type="text/password" name="名稱" value="文本" />

          • 當(dāng) type=”text” 時(shí),輸入框?yàn)槲谋据斎肟?/p>

          • 當(dāng) type=”password” 時(shí), 輸入框?yàn)槊艽a輸入框

          • 單/復(fù)選框 <input type="radio/checkbox" value="值" name="名稱" checked="checked"/>

          • 當(dāng) type=”radio” 時(shí),控件為單選框,同一組單選框 name 命名要一致

          • 當(dāng) type=”checkbox” 時(shí),控件為復(fù)選框

          • 提交按鈕 <input type="submit" value="提交">

          • 重置按鈕 <input type="reset" value="重置">

          • 下拉列表框 ` `

          • value <option value="提交值">選項(xiàng)</option>

          • 選中 selected="selected"

          • 多選 multiple="multiple"

          • 標(biāo)簽 <label for="控件id名稱">,標(biāo)簽的 for 屬性中的值應(yīng)當(dāng)與相關(guān)控件的 id 屬性 值一定要相同

          CSS

          基本知識(shí)

          CSS 樣式由選擇符和聲明組成,而聲明又由屬性和值組成。

          • 選擇符:又稱選擇器,指明網(wǎng)頁(yè)中要應(yīng)用樣式規(guī)則的元素。

          • 聲明:在英文大括號(hào){}中的的就是聲明,屬性和值之間用英文冒號(hào){}分隔。當(dāng)有多條聲明時(shí),中間可以英文分號(hào);分隔。

          從CSS 樣式代碼插入的形式來(lái)看基本可以分為以下3種:內(nèi)聯(lián)式、嵌入式和外部式三種。優(yōu)先級(jí)遵循就近原則,一般來(lái)說(shuō),內(nèi)聯(lián)式 > 嵌入式 > 外部式

          • 內(nèi)聯(lián)式

          例子 <p style="color:red;font-size:12px">這里文字是紅色。</p>

          • 嵌入式

          • 外部式

          例子:<link href="base.css" rel="stylesheet" type="text/css" />

          CSS 選擇器

          常見(jiàn)的類選擇器類型有如下幾種:

          • 標(biāo)簽選擇器,.標(biāo)簽選擇器名稱{css樣式代碼;}

          • 類選擇器,.類選器名稱{css樣式代碼;}

          • ID 選擇器,#類選器名稱{css樣式代碼;}

          • 子選擇器,即大于符號(hào)(>),用于選擇指定標(biāo)簽元素的第一代子元素

          • 包含選擇器,即加入空格 ,用于選擇指定標(biāo)簽元素下的后輩元素

          • 通用選擇器,匹配html中所有標(biāo)簽元素,* {css樣式代碼;}類選擇器和ID選擇器都可以應(yīng)用于任何元素,但 ID 選擇器只能在文檔中使用一次,可以使用類選擇器詞列表方法為一個(gè)元素同時(shí)設(shè)置多個(gè)樣式,ID 選擇器是不可以的。

          子選擇器和包含選擇器區(qū)別:>作用于元素的第一代后代,空格作用于元素的所有后代。

          另外還有兩種選擇符:

          • 偽類選擇符,允許給 HTML 不存在的標(biāo)簽(標(biāo)簽的某種狀態(tài))設(shè)置樣式。常用的有 a:hover{color:red;}

          • 分組選擇符,為 HTML 中多個(gè)標(biāo)簽元素設(shè)置同一個(gè)樣式時(shí),可以使用分組選擇符,

          。例如h1,span{color:red;}

          CSS 的繼承、層疊和特殊性

          • CSS 的某些樣式是具有繼承性的,繼承是一種規(guī)則,它允許樣式不僅應(yīng)用于某個(gè)特定 HTML 標(biāo)簽元素,而且應(yīng)用于其后代。

          • 特殊性:不同選擇器具有不同權(quán)值,標(biāo)簽的權(quán)值為 1,類選擇符的權(quán)值為 10,ID選擇符的權(quán)值最高為 100。

          • 層疊 就是在 HTML 文件中對(duì)于同一個(gè)元素可以有多個(gè) CSS 樣式存在,當(dāng)有相同權(quán)重的樣式存在時(shí),會(huì)根據(jù)這些 CSS 樣式的前后順序來(lái)決定,處于最后面的 CSS 樣式會(huì)被應(yīng)用。

          CSS 格式化排版

          文字排版

          • 字體,body{font-family:"Microsoft Yahei";}

          • 字號(hào)、顏色,body{font-size:12px;color:#666}

          • 粗體,body{font-weight:bold;}

          • 斜體,body{font-style:italic;}

          • 下劃線,body{font-style:italic;}

          • 刪除線,body{text-decoration:line-through;}

          段落排版

          • 縮進(jìn),p{text-indent:2em;}

          • 行間距(行高),p{line-height:1.5em;}

          • 中文字間距、字母間距,letter-spacing:50px;word-spacing:50px;

          • 對(duì)齊,div{text-align:center;}

          CSS 盒模型

          元素分類

          在 CSS 中,HTML 中的標(biāo)簽元素大體被分為三種不同的類型:塊狀元素、內(nèi)聯(lián)元素(又叫行內(nèi)元素)和內(nèi)聯(lián)塊狀元素。

          • 常用的塊狀元素有:

          塊級(jí)元素特點(diǎn):

          1. 每個(gè)塊級(jí)元素都從新的一行開(kāi)始,并且其后的元素也另起一行。

          2. 元素的高度、寬度、行高以及頂和底邊距都可設(shè)置。

          3. 元素寬度在不設(shè)置的情況下,是它本身父容器的 100%(和父元素的寬度一致),除非設(shè)定一個(gè)寬度。

          設(shè)置 display:block就是將元素顯示為塊級(jí)元素,從而使元素具有塊狀元素特點(diǎn)。

          注:img 標(biāo)簽與 div 層之間會(huì)有空隙的解決方法是:使用 display:block 就可以消除間隙。

          • 常用的內(nèi)聯(lián)元素有:

          內(nèi)聯(lián)元素特點(diǎn):

          1. 和其他元素都在一行上;

          2. 元素的高度、寬度及頂部和底部邊距不可設(shè)置;

          3. 元素的寬度就是它包含的文字或圖片的寬度,不可改變。

          塊狀元素也可以通過(guò)代碼 display:inline將元素設(shè)置為內(nèi)聯(lián)元素。

          • 常用的內(nèi)聯(lián)塊狀元素有:

          inline-block 元素特點(diǎn):

          1. 和其他元素都在一行上;

          2. 元素的高度、寬度、行高以及頂和底邊距都可設(shè)置。

          內(nèi)聯(lián)塊狀元素(inline-block)就是同時(shí)具備內(nèi)聯(lián)元素、塊狀元素的特點(diǎn),代碼 display:inline-block就是將元素設(shè)置為內(nèi)聯(lián)塊狀元素。

          盒模型

          • 邊框

          盒子模型的邊框就是圍繞著內(nèi)容補(bǔ)白的線,這條線你可以設(shè)置它的粗細(xì)樣式顏色(邊框三個(gè)屬性)。

          單獨(dú)設(shè)置下邊框的例子 div{border-bottom:1px solid red;}

          • 寬度和高度

          CSS 內(nèi)定義的寬(width)和高(height),指的是 填充以里的內(nèi)容范圍。一個(gè)元素實(shí)際寬度(盒子的寬度)=左邊界+左邊框+左填充+內(nèi)容寬度+右填充+右邊框+右邊界。

          W3C 的標(biāo)準(zhǔn) Box Model:

          所以有時(shí)會(huì)設(shè)置 box-sizing: border-box;來(lái)避免計(jì)算內(nèi)部元素大小

          • 填充(padding)

          元素內(nèi)容與邊框之間是可以設(shè)置距離的,稱之為“填充”。填充也可分為上、右、下、左(順時(shí)針)。

          例子:

          • 邊界(margin)

          元素與其它元素之間的距離可以使用邊界(margin)來(lái)設(shè)置,順序和填充一樣是上,右,下,左。padding 在邊框里,margin 在邊框外。

          CSS 布局模型

          CSS 包含 3 種基本的布局模型,用英文概括為:Flow、Layer 和 Float。 在網(wǎng)頁(yè)中,元素有三種布局模型:

          1. 流動(dòng)模型(Flow)

          2. 浮動(dòng)模型 (Float)

          3. 層模型(Layer)

          流動(dòng)模型

          流動(dòng)模型,流動(dòng)(Flow)是默認(rèn)的網(wǎng)頁(yè)布局模式。

          流動(dòng)布局模型具有2個(gè)比較典型的特征:

          1. 塊狀元素 都會(huì)在所處的包含元素內(nèi)自上而下按順序垂直延伸分布,因?yàn)樵谀J(rèn)狀態(tài)下,塊狀元素的寬度都為 100%。實(shí)際上,塊狀元素都會(huì)以行的形式占據(jù)位置。

          2. 在流動(dòng)模型下,內(nèi)聯(lián)元素 都會(huì)在所處的包含元素內(nèi)從左到右水平分布顯示。

          浮動(dòng)模型

          任何元素在默認(rèn)情況下是不能浮動(dòng)的,但可以用 CSS 定義為浮動(dòng)。例子:#div1{float:left;}

          層模型

          CSS 定義了一組定位(positioning)屬性來(lái)支持層布局模型。

          層模型有三種形式:

          1. 絕對(duì)定位(position: absolute)

          2. 相對(duì)定位(position: relative)

          3. 固定定位(position: fixed)

          • 絕對(duì)定位(position: absolute)

          如果想為元素設(shè)置層模型中的絕對(duì)定位,需要設(shè)置 position:absolute(表示絕對(duì)定位),這條語(yǔ)句的作用將元素從文檔流中拖出來(lái),然后使用 left、right、top、bottom 屬性相對(duì)于其最接近的一個(gè)具有定位屬性的父包含塊進(jìn)行絕對(duì)定位。如果不存在這樣的包含塊,則相對(duì)于 body 元素,即相對(duì)于瀏覽器窗口

          • 相對(duì)定位(position: relative)

          如果想為元素設(shè)置層模型中的相對(duì)定位,需要設(shè)置 position:relative(表示相對(duì)定位),它通過(guò) left、right、top、bottom 屬性確定元素在正常文檔流中的偏移位置。相對(duì)定位完成的過(guò)程是首先按 static(float) 方式生成一個(gè)元素(并且元素像層一樣浮動(dòng)了起來(lái)),然后相對(duì)于以前的位置移動(dòng),移動(dòng)的方向和幅度由left、right、top、bottom屬性確定,偏移前的位置保留不動(dòng)

          簡(jiǎn)單來(lái)說(shuō),就是相對(duì)元素原來(lái)的位置進(jìn)行移動(dòng),元素本身所占的位置會(huì)保留。

          • 固定定位(position: fixed)

          設(shè)置 position:fixed;。fixed:表示固定定位,與 absolute 定位類型類似,但它的相對(duì)移動(dòng)的坐標(biāo)是視圖(屏幕內(nèi)的網(wǎng)頁(yè)窗口)本身。由于視圖本身是固定的,它不會(huì)隨瀏覽器窗口的滾動(dòng)條滾動(dòng)而變化,除非你在屏幕中移動(dòng)瀏覽器窗口的屏幕位置,或改變?yōu)g覽器窗口的顯示大小,因此固定定位的元素會(huì)始終位于瀏覽器窗口內(nèi)視圖的某個(gè)位置,不會(huì)受文檔流動(dòng)影響,這與 background-attachment:fixed; 屬性功能相同。

          Relative 與 Absolute 組合使用,必須遵守下面規(guī)范:

          1. 參照定位的元素必須是相對(duì)定位元素的前輩元素

          2. 參照定位的元素必須加入 position:relative;

          3. 定位元素加入 position:absolute,便可以使用 top、bottom、left、right 來(lái)進(jìn)行偏移定位了

          例子(HTML 和 CSS 代碼分別為):

          顏色和長(zhǎng)度

          設(shè)置顏色的方法也有很多種:

          • 英文命令顏色,p{color:red;}

          • RGB顏色,p{color:rgb(133,45,200);}p{color:rgb(20%,33%,25%);}

          • 十六進(jìn)制顏色, 這種顏色設(shè)置方法是現(xiàn)在比較普遍使用的方法,其原理其實(shí)也是 RGB 設(shè)置,但是其每一項(xiàng)的值由 0-255 變成了十六進(jìn)制 00-ff。p{color:#00ffff;}(當(dāng)你設(shè)置的顏色是 16 進(jìn)制的色彩值時(shí),如果每?jī)晌坏闹迪嗤梢钥s寫一半,#0ff)RGB 配色表參考 RGB顏色對(duì)照表 - 在線工具 - 開(kāi)源中國(guó) 或者 RGB 配色表長(zhǎng)度單位總結(jié)一下,目前比較常用到px(像素)、em、% 百分比,要注意其實(shí)這三種單位都是相對(duì)單位。

          • 像素

          • em,就是本元素給定字體的 font-size 值

          • % 百分比

          設(shè)置小技巧

          水平居中設(shè)置

          • 行內(nèi)元素。如果被設(shè)置元素為文本、圖片等行內(nèi)元素時(shí),水平居中是通過(guò)給父元素設(shè)置 text-align:center來(lái)實(shí)現(xiàn)的。

          • 定寬塊狀元素(塊狀元素的寬度 width 為固定值)。滿足定寬塊狀兩個(gè)條件的元素是可以通過(guò)設(shè)置“左右 margin”值為 auto 來(lái)實(shí)現(xiàn)居中的。

          • 不定寬塊狀元素。

          • 加入 table 標(biāo)簽(包括 <tbody>、<tr>、<td>),為這個(gè) table 設(shè)置“左右 margin 居中”

          • 設(shè)置 display: inline方法:與第一種類似,顯示類型設(shè)為 行內(nèi)元素,然后使用 text-align:center來(lái)實(shí)現(xiàn)居中效果,進(jìn)行不定寬元素的屬性設(shè)置。

          • 給父元素設(shè)置 float 和 position:relative; left:50%,子元素設(shè)置 position:relativeleft: -50% 來(lái)實(shí)現(xiàn)水平居中。

          垂直居中設(shè)置

          • 父元素高度確定的單行文本。通過(guò)設(shè)置父元素的 height 和 line-height 高度一致來(lái)實(shí)現(xiàn)的。(height: 該元素的高度;line-height: 顧名思義,行高(行間距),指在文本中,行與行之間的 基線間的距離 )。

          • 父元素高度確定的多行文本。使用插入 table (包括 tbody、tr、td)標(biāo)簽,同時(shí)設(shè)置 vertical-align:middle

          另外,為元素設(shè)置以下兩個(gè)屬性之一會(huì)隱形改變 display 類型,元素的display顯示類型就會(huì)自動(dòng)變?yōu)橐?span>display:inline-block(塊狀元素)的方式顯示,當(dāng)然就可以設(shè)置元素的 width 和 height 了,且默認(rèn)寬度不占滿父元素。

          position: absolute

          float: leftfloat:right


          主站蜘蛛池模板: 暖暖免费高清日本一区二区三区 | 日本精品一区二区三区在线视频一 | 国产吧一区在线视频| 怡红院一区二区在线观看| 日本免费精品一区二区三区| 香蕉久久一区二区不卡无毒影院| 亚洲一区AV无码少妇电影| 国产一区二区高清在线播放 | 中文字幕在线看视频一区二区三区| 亚洲熟女www一区二区三区| 国产亚洲一区二区三区在线| 国产一区二区影院| 日韩中文字幕精品免费一区| 中文字幕一区二区三区日韩精品 | 中文字幕国产一区| 国产伦精品一区二区三区免费迷| 无码人妻精品一区二区三18禁| 国产在线观看91精品一区| 中文字幕日韩丝袜一区| 亚洲AV日韩AV天堂一区二区三区| 夜夜精品无码一区二区三区| 亚洲日韩国产一区二区三区在线| 中文字幕乱码一区二区免费| 一级特黄性色生活片一区二区| 国产精品乱码一区二区三| 亚洲视频一区二区三区四区| 性无码一区二区三区在线观看| 亚洲乱码国产一区三区| 日韩人妻无码一区二区三区久久99 | 麻豆高清免费国产一区| 亚洲爆乳无码一区二区三区| 真实国产乱子伦精品一区二区三区 | 亚洲中文字幕乱码一区| 亚洲国产欧美国产综合一区 | 久久久人妻精品无码一区| 人妻无码一区二区视频| 久久婷婷色综合一区二区| 国产成人无码一区二区在线观看| 国精产品一区一区三区免费视频| 日韩人妻无码一区二区三区久久99| 亚洲乱色熟女一区二区三区丝袜|