每次寫前端都是一個痛苦的過程,老是靜不下來,完全的研究下前端的技術,致使每次套頁面都是直接採用一些封裝好的控件,而有時對這些樣式不滿意時,又得百度一下該怎麼用,低效且不愉快,強制本身好好的學習下基本功css
<!-- more -->html
主要有下面三個使用姿式,其中優先級爲 c > b > a前端
<!-- 方式 a --> <link rel="stylesheet" type="text/css" href="mystyle.css"> <!-- 方式 b --> <style> p { color: red } </style> <!-- 方式 c --> <div style="color:red; font-size:12pt">dd</div>
對於標籤的樣式定義,特別是在引入css文件時,發現一個標籤可能多重命中方式,有經過id進行設置的,有class設置的,也有標籤設置的,他們之間的優先級是:css3
1. 內聯樣式表的權值最高 1000; 2. ID 選擇器的權值爲 100 3. Class 類選擇器的權值爲 10 4. HTML 標籤選擇器的權值爲 1
在實際的使用中,常常出現的定義class, 根據id或者直接對標籤,來指定css屬性git
<style> <!-- 直接經過標籤名 + {} 方式來肯定標籤對應的屬性 --> p { background-color: yellow; } <!-- 經過id來肯定css樣式: # + id + {} --> #tabId { background-color: red; } <!-- 經過定義class方式: . + className + {}--> .clzName { background-color: blue; } </style>
上面是基本的使用姿式,每每咱們常常會遇到組合的方式,如但願 設置: div標籤內部的 p 標籤中的文本顏色等,常見組合有四種github
如上面的case, div 標籤內部全部的p標籤中文本,都設置爲紅色web
<style> div p { color: red } </style> <div> <span> <p> 紅色的文本內容 </p> </span> <hr/> <p> 紅色的文本內容 </p> </div>
這個相比較與後代選擇器,區別就是子元素只匹配直接關聯的子元素(也就是中間不能有嵌套)api
<style> div > span { color: red } </style> <div> <p> <span> 默認黑色的文本內容 </span> </p> <hr/> <span> 紅色的文本內容 </span> </div>
可選擇緊接在另外一元素後的元素,且兩者有相同父元素瀏覽器
<style> div+p { background-color:yellow; } </style> <p>(默認黑色的內容).</p> <div> <h2>My name is Donald</h2> <p>I live in Duckburg.</p> </div> <p>(黃色的內容).</p>
後續兄弟選擇器選取全部指定元素以後的兄弟元素。hexo
<style> div+p { background-color:yellow; } </style> <p>(默認黑色的內容).</p> <div> <h2>My name is Donald</h2> <p>I live in Duckburg.</p> </div> <p>(黃色的內容).</p> <p>(黃色的內容).</p> <span>默認黑色</span> <p>(黃色的內容).</p>
支持簡寫方式:
body { background: #ffffff url('img_tree.png') no-repeat right top; }
注意: a:hover 必須在 a:link 和 a:visited 以後,須要嚴格按順序才能看到效果。
注意: a:active 必須在 a:hover 以後。
在html中,列表主要是 : li, ul, ol 等
默認 ol 是以數字排序; ul 是以符號排序; li 爲列表內的元素標籤
用的較多的屬性
主要是用來控制一個標籤和其餘標籤的位置,好比兩個標籤之間作間隔區分等,比較有用
padding與margin的區別
主要是標籤與周邊的距離設置
定義元素邊框與元素內容之間的空間
這個有些時候仍是挺有用的,設置一個標籤四周的邊框,通常能夠設置線粗細,樣式,顏色等
一個很是有意思的點是,邊框支持分別設置上下左右四個線的形式,如只設置一個左右有顏色的
<div> <p style="border-left-style:dashed; border-left-color:red; border-right-style:solid;"> 只有左右邊框的狀況</p> </div>
outline主要做用在border上,繪製於元素周圍的一條線,位於邊框邊緣的外圍,可起到突出元素的做用
從實際體驗來說,這個和border的效果差很少
這個主要就是用來控制標籤的寬高等相關尺寸的屬性,常見的設置以下
控制標籤的顯示隱藏等
none能夠隱藏某個元素,且隱藏的元素不會佔用任何空間。也就是說,該元素不但被隱藏了,並且該元素本來佔用的空間也會從頁面佈局中消失。
塊元素是一個元素,佔用了所有寬度,在先後都是換行
內聯元素只須要必要的寬度,不強制換行。
1. 塊級元素(block)特性: 老是獨佔一行,表現爲另起一行開始,並且其後的元素也必須另起一行顯示; 寬度(width)、高度(height)、內邊距(padding)和外邊距(margin)均可控制; 2. 內聯元素(inline)特性: 和相鄰的內聯元素在同一行; 寬度(width)、高度(height)、內邊距的top/bottom(padding-top/padding-bottom)和外邊距的top/bottom(margin-top/margin-bottom)都不可改變,就是裏面文字或圖片的大小; 3. 塊級元素主要有: address , blockquote , center , dir , div , dl , fieldset , form , h1 , h2 , h3 , h4 , h5 , h6 , hr , isindex , menu , noframes , noscript , ol , p , pre , table , ul , li 4. 內聯元素主要有: a , abbr , acronym , b , bdo , big , br , cite , code , dfn , em , font , i , img , input , kbd , label , q , s , samp , select , small , span , strike , strong , sub , sup ,textarea , tt , u , var 5. 可變元素(根據上下文關係肯定該元素是塊元素仍是內聯元素): applet ,button ,del ,iframe , ins ,map ,object , script
hidden能夠隱藏某個元素,但隱藏的元素仍需佔用與未隱藏以前同樣的空間,也就是說,該元素雖然被隱藏了,但仍然會影響佈局。
position 屬性指定了元素的定位類型。在使用top, bottom, left, right以前,通常須要先肯定position屬性,明確具體的定位方式
如一個測試
<style> h2 { position:absolute; left:100px; top:150px; } </style> </head> <body> <h2>這是一個絕對定位了的標題</h2> <p>用絕對定位,一個元素能夠放在頁面上的任何位置。標題下面放置距離左邊的頁面100 px和距離頁面的頂部150 px的元素。.</p> </body>
注意
當多個元素在同一個位置時,就會出現重疊的問題,特別是relative這種場景,在網頁右下角添加懸浮窗時,常常會出現遮蓋的問題,這時能夠用 z-index
屬性來指定覆蓋順序,越大,則越上面
CSS 的 Float(浮動),會使元素向左或向右移動,其周圍的元素也會從新排列。
每每是用於圖像,但它在佈局時同樣很是有用。
元素的水平方向浮動,意味着元素只能左右移動而不能上下移動。
一個浮動元素會盡可能向左或向右移動,直到它的外邊緣碰到包含框或另外一個浮動框的邊框爲止。
浮動元素以後的元素將圍繞它。
浮動元素以前的元素將不會受到影響。
若是圖像是右浮動,下面的文本流將環繞在它左邊
若是你把幾個浮動的元素放到一塊兒,若是有空間的話,它們將彼此相鄰
<!-- 注意多個浮動的圖片時,縮小瀏覽器窗口大小,佈局會發生改變 --> .thumbnail { float:left; width:110px; height:90px; margin:5px; }
根據前面學習到的幾個屬性(text-align, margin, position)等來實現各類標籤的對齊方式
display:block;margin:auto
,這樣纔會生效)一個case以下
<div style="width:200px; border: 3px solid blue; padding: 4px"> <div style="width:50%; border:3px solid red; margin: auto; padding: 20px"> 這是一個測試標籤居中對其的示例 </div> </div> <br/> <div style="width:200px; border: 3px solid blue; padding: 4px"> <div style="width:50%; border:3px solid red; text-align: center; padding: 20px"> 這是一個測試標籤內文本居中對齊的示例 </div> </div>
前面介紹了邊框的設置,主要仍是線條類型,粗細以及顏色,如今則能夠擴展,設置圓角、陰影,邊框圖
一個實例,捷足 box-shadow 給圖片加上一個白色背景邊框
<style> #boxshadow { position: relative; <!-- 添加邊框陰影 --> -moz-box-shadow: 1px 2px 4px rgba(0, 0, 0,0.5); -webkit-box-shadow: 1px 2px 4px rgba(0, 0, 0, .5); box-shadow: 1px 2px 4px rgba(0, 0, 0, .5); padding: 10px; background: white; } /* Make the image fit the box */ #boxshadow img { width: 100%; border: 1px solid #8a4419; border-style: inset; } #boxshadow::after { content: ''; position: absolute; z-index: -1; /* hide shadow behind image */ -webkit-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3); box-shadow: 0 15px 20px rgba(0, 0, 0, 0.3); width: 70%; left: 15%; /* one half of the remaining 30% */ height: 20%; bottom: 0; } </style> <div id="boxshadow"> <img src="https://raw.githubusercontent.com/liuyueyi/Source/master/img/info/blogInfoV2.png" alt="Norway"> </div>
除了前面說的文本顏色,大小,decorate, transform等以外,這裏額外的加了一些特性
5px 5px 5px #FF0000; 陰影,參數說明同 box-shadow
文字逸出時,怎麼辦( 配合overflow:hidden,將逸出的隱藏掉)
一個實例:
<style> div.ov { width: 120px; white-space:nowrap; border: 1px solid black; overflow:hidden; text-overflow:ellipsis } </style> <div class="ov"> 這是一個會移除的文本 </div>
word-wrap 文本太長時,換行的策略
還有一個主要針對英文單詞的換行策略 word-break
@Font-face 指定特殊的字體
通常的使用姿式以下:
<style> @font-face { <!-- 字體命名 --> font-family: myFirstFont; <!-- 指定字體文件路徑 --> src: url(sansation_light.woff); } div { font-family:myFirstFont; } </style>
實現轉換,最多見的就是旋轉必定角度了
過渡,配合上面的transform能夠實現旋轉or放大的動畫效果
如一個case,在鼠標放上去時,放大且旋轉360°
<style> div { width: 100px; height: 100px; background: red; -webkit-transition: width 2s, height 2s, -webkit-transform 2s; /* For Safari 3.1 to 6.0 */ transition: width 2s, height 2s, transform 2s, background 2s; } div:hover { width: 200px; height: 200px; background:blue; -webkit-transform: rotate(360deg); /* Chrome, Safari, Opera */ transform: rotate(360deg); } </style> <div>鼠標移動到 div 元素上,查看過渡效果。</div>
經過 @keyframes
來建立動畫的效果,經過 animation
來使用動畫
一個實例
<style> div { width:100px; height:100px; background:red; position:relative; animation:myfirst 5s; -webkit-animation:myfirst 5s; /* Safari and Chrome */ } @keyframes myfirst { 0% {background:red; left:0px; top:0px;} 25% {background:yellow; left:200px; top:0px;} 50% {background:blue; left:200px; top:200px;} 75% {background:green; left:0px; top:200px;} 100% {background:red; left:0px; top:0px;} } @-webkit-keyframes myfirst /* Safari and Chrome */ { 0% {background:red; left:0px; top:0px;} 25% {background:yellow; left:200px; top:0px;} 50% {background:blue; left:200px; top:200px;} 75% {background:green; left:0px; top:200px;} 100% {background:red; left:0px; top:0px;} } </style> <div>哈哈</div>
支持圖片圓角設置
常見的文字是橫排,從左到右,若是但願改爲豎排的,能夠怎麼辦 ?
writing-mode: 適用於:除 <' display '> 屬性定義爲table-row-group | table-column-group | table-row | table-column以外的全部元素
基於hexo + github pages搭建的我的博客,記錄全部學習和工做中的博文,歡迎你們前去逛逛
盡信書則不如,已上內容,純屬一家之言,因本人能力通常,見識有限,如發現bug或者有更好的建議,隨時歡迎批評指正