CSS第一天

来源:https://www.cnblogs.com/12345huangchun/archive/2018/12/14/10121942.html
-Advertisement-
Play Games

一、定義 CSS:層疊樣式表,用來美化頁面 二、書寫位置(即引入方式) 1,內嵌式,寫在head標簽下的style標簽內部 2,外聯式,同樣寫在head標簽內部,但是用的是link標簽,邏輯是寫在外部的CSS文件里的 3,行內式,寫在元素的style屬性中 三、語法結構 四、選擇器分類 1,標簽選擇 ...


  關於CSS而言,好像沒有什麼規律,所以我本篇博客寫的有點亂,而且內容還很少,在我開始用CSS時有遇到兩個比較坑的地方,一是瀏覽器上有margin和padding,有時需要我們先去除間隔,而是在使用inline-block時,得到的結果不是預想的。

  一、定義

  CSS:層疊樣式表,用來美化頁面

  二、書寫位置(即引入方式)

  1,內嵌式,寫在head標簽下的style標簽內部

  2,外聯式,同樣寫在head標簽內部,但是用的是link標簽,邏輯是寫在外部的CSS文件里的

  3,行內式,寫在元素的style屬性中

  三、語法結構

   選擇器{
            屬性:值;
        }

  四、選擇器分類

  1,標簽選擇器

  div{
            color: red;
        }
以標簽名為選擇器名,這樣寫可以控制所有這類標簽的樣式

  2,類(class)選擇器(最常用)

 .tt{
            color: blue;
        }
 <div class="tt">hhhhhhdsd</div>
 <div class="tt">sdasdasd</div>
 <p class="tt">dhsdhsjh</p>
 <a href="#" class="tt">sdsad</a>
.類名為選擇器名,會選擇整個頁面上類名相同的標簽,一個標簽里可以寫多個類

  3,id選擇器

    #ss{
            color: blue;
        }
<div id="ss">nihao a </div>
#id名為選擇器,根據id找到標簽

  4,通配符選擇器

   *{
           color: blue;
       }
*可以選擇所有元素進行樣式控制

  5,後代選擇器(子孫都可以)

   div p{
           color: blue;
       }
<div>
        <p>
            <a href="#">kkk</a>
            <a href="#">ksas</a>
        </p>
        <a href="#">jjj
        <p>kdlsdk</p></a>
    </div>
div p用空格隔開,可以控制所有div標簽下的所有p標簽,選擇器用空格隔開,後面的選擇器必須要在前面的選擇器里有的

  6,子代選擇器(只有兒子可以)

 div>p{
           color: blue;
       }
 <div>
        <p>
            <a href="#">kkk</a>
            <a href="#">ksas</a>
        </p>
        <a href="#">jjj
            <p>kdlsdk</p>
        </a>
    </div>
div>p用‘>’隔開,只會選擇div標簽下的第一層中p標簽,於是a標簽的下p標簽是不會被選中的

  7,毗鄰選擇器

 div+p{
            color: red;
        }
  <p id="p1">dsdasdada</p>
  <div>kkkkk</div>
  <p id="p2">kksdksdk</p>
  <p id="p3">sdaaddjkjdjj</p>
div+p用‘+’加號隔開,只會選擇id為p2的p標簽

  8,弟弟選擇器

  div~p{
            color: red;
        }
 <p id="p1">dsdasdada</p>
 <div>kkkkk</div>
 <p id="p2">kksdksdk</p>
 <p id="p3">sdaaddjkjdjj</p>
 <span>ssss</span>
 <a href="#">dhshdhashd</a>
div~p用‘~’隔開,選擇的是div標簽後面的所有p標簽

  9,交集選擇器

 p.p1{
            color: brown;
        }
    <p>jjjjjjjj</p>
    <p class="p1">dsdasdada</p>
    <div>kkkkk</div>
    <p class="p1">kksdksdk</p>
    <p class="p1">sdaaddjkjdjj</p>
    <span>ssss</span>
    <a href="#" class="p1">dhshdhashd</a>
p.p1連著寫在一起,會選擇既是p標簽又是屬於p1類的,所以第一個p標簽不滿足

  10,並集選擇器

 a,.p1{
            color: brown;
        }
    <p>jjjjjjjj</p>
    <p class="p1">dsdasdada</p>
    <div>kkkkk</div>
    <p class="p1">kksdksdk</p>
    <p class="p1">sdaaddjkjdjj</p>
    <span>ssss</span>
    <a href="#" class="p1">dhshdhashd</a>
選擇器之間以‘,’逗號隔開,會選擇滿足a標簽或者.p1類的

  11,偽類選擇器

/* 未訪問的鏈接 */控制a標簽
a:link {
  color: #FF0000
}

/* 已訪問的鏈接 */
a:visited {
  color: #00FF00
} 

/* 滑鼠移動到鏈接上 */  這個用的比較多,當滑鼠停留在上面時的樣式
a:hover {
  color: #FF00FF
} 

/* 選定的鏈接 */ 就是滑鼠點下去還沒有抬起來的那個瞬間,可以讓它變顏色
a:active {
  color: #0000FF
}

/*input輸入框獲取焦點時樣式*/
input:focus {   #input預設的有個樣式,滑鼠點進去的時候,input框會變淺藍色的那麼個感覺
  #outline: none;
  background-color: #eee; #框裡面的背景色
}

  12,偽元素選擇器

#將p標簽中的文本的第一個字變顏色變大小
p:first-letter { 
  font-size: 48px;
  color: red;
}
/*在每個<p>元素之前插入內容*/
p:before {
  content:"*";
  color:red;
}
/*在每個<p>元素之後插入內容*/
p:after {
  content:"[?]";
  color:blue;
} 

  五、選擇器的優先順序

  我們可以通過不同的選擇器來選擇標簽,如果多個選擇器選中了同一標簽時,該以那個選擇器來渲染標簽呢?於是就牽扯到選擇器的優先順序問題。

  1,我們還得有個知識點,當後代沒有自己的選擇器,會繼承父級的樣式中的某些屬性,比如

 div{
            color: blue;
        }
    <div>
        aasdasdsad
        <p>
            <a href="#">kkkkk</a>
            <span>dasdas</span>
        </p>
        <a href="#">kkdkkdkksk</a>
        <span>rewrrrreerrre</span>
    </div>
此時div標簽下的所有標簽前的文本顏色都會繼承div標簽的文本顏色。但註意繼承的優先順序是最小的。color,text—,font-,line-,cursor可以被繼承的
例外:
a標簽不繼承顏色
h標簽不繼承font-size,font-weight

  2,選擇器的優先順序:繼承<通配符<標簽選擇器<class選擇器<id選擇器<行內樣式<!important

  3,選擇器權重

  在複合選擇器中,如何計算選擇器權重,只要出現important,優先順序永遠是最高的,其次是行內樣式

  行內:1000

  id:100

  類:10

  元素:1

  繼承:0

  把所有的權重相加,但是永不進位

  六、元素的顯示模式

  1,塊級元素

display:block
會獨自占據一整行,可以設置有效的寬高,子元素預設和父元素一樣寬,代表div,h1-h6

  2,行內元素

display:inline
一行上可以顯示多個,不能設置有效的寬高,其寬高依賴於內容,代表span,strong,em

  3,行內塊級元素

display:inline-block
一行上可以顯示多個,可以設置有效的寬高,代表img,input

  我們可以通過display屬性來重新設置標簽屬性

  4,display:none和visibility:hidden的區別

兩者都有隱藏的作用
visibility:hidden隱藏的元素仍然占據空間,該元素雖然被隱藏了,但仍然會影響佈局
display:none隱藏的某個元素不會占據空間,不會影響佈局

  七、font相關屬性

font-style:值  控制字體是否斜體
可選值:normal 正常,italic 斜體,oblique 斜體

font-weight:值 控制字體粗細
可選值:normal 正常,bold 加粗,bolder 更粗,lighter 細體
還可以寫數值,100-900間,400相當於normal,700相當於bold
bolder和light會受到字體的現在,一般中文到達bold就是最大,並且一般中文沒有細體

font-size:值 控制字體大小
值為數字,後面跟上單位px,網頁上的預設為16px

font-family:值 控制字體
值為所有字體類型,比如宋體,楷體。。。。

font連寫
font:font-weight font-style font-size font-family
前兩個可以省略,前兩個可以互換位置,後兩個只能固定位置,並且不能省略

  八、background相關屬性

background-color:值   設置背景顏色
background-image:url(圖片的路徑) 控制的是背景圖片
background-repeat:值 控制背景圖片是否重覆(平鋪)
值可選:no-repeat 不平鋪,repeat-y 垂直平鋪,repeat-x 水平平鋪,repeat 兩個方向平鋪

background-position:值 控制背景圖片的位置
值可選:水平:left center right 垂直:top center bottom
長度賦值:先寫x的位移,再寫y的位移

background-attachment:值 控制背景圖片是否隨著滾動條滾動
值可選:scroll 預設的隨著滾動條滾動 , fixed 不滾動

background連寫
background:red url(圖片路徑) no-repeat top center 屬性沒有順序要求,都可以省略

  九、文本(text)屬性

text-align:值   文本的水平對齊方式
值可選:left 左對齊,center 居中對齊,right 右對齊

text-decoration:值 文本修飾
值可選:none 正常,underline 下劃線,overline 上劃線,line-through 刪除線

text-indent:值 文本首行縮進
值為數字加上單位px,單位也可以為em,1em為一個字體大小

  十,邊框屬性

border-style:值    控制邊框的樣式
值可選:none 無邊框,dotted 點狀虛線邊框,dashed 矩形虛線邊框,solid 實線邊框

border-weight:值 設置邊框寬多少
值為數字加單位px

border-color:值 設置邊框顏色

border連寫
border:2px solid red;

除了統一設置邊框之外,還可以單獨為某一邊設置邊框
border-top-style:值 ,border-top-color:值 , border-top-weight:值 這是為上邊框設置屬性,還可以換成right,left,bottom

border-radius:值 用這個屬性能實現圓角邊框的效果
值可為數字加單位px,當為寬或高的一半時,就為圓形,值還可以為百分數,當為50%時,也為一個圓。兩種前提是在正方形下

   十一、顏色屬性

顏色可以三種表示方式:
1,十六進位值,如#ff0000,前兩位表示紅色,中間兩位表示綠色,最後兩位表示藍色,如#ffffff表示白色,#000000表示黑色
2,用rgb表示,如rgb(255,0,0),第一個參數表示紅色,第二個參數表示綠色,第三個參數表示藍色,每個參數為0-255
3,用顏色名字表示,如red
4,用rgba(255,0,0,0.3),這和rgb差不多,只是多了第四個參數叫透明度,範圍是0.0-1.0

opacity屬性設置透明度
opacity:值 值為0-1,0為完全透明,1為完全不透明

  十二、盒子模型

在css裡面,每個標簽可以稱為一個盒子模型
margin:外邊距,用於控制元素與元素之間的距離;margin的最基本用途就是控制元素周圍空間的間距,從視覺上達到相互隔開的目的
padding:內邊距,用於控制內容與邊框之間的距離
border:邊框
content:盒子的內容,顯示文本和圖像

margin和padding一樣,可以為四邊同時設置:
margin:2px 四邊都是2px
margin:2px 3px 上下為2px,左右為3px
margin:2px 3px 4px 上為2px,左右為3px,下為4px
margin:2px 3px 4px 5px 上為2px,右為3px,下為4px,左為5px

也可以為margin和padding的某一條邊單獨設置top,bottom,left,right
margin-top:2px

  十三、float浮動屬性

float可以讓塊級標簽併排在一行,但如果設定了float,浮動框就不在文檔的普通流,比如在一個div1里併排放了兩個div浮動框,由於浮動框脫離了文本,導致原先的大div1沒有了內容,若此時在div1下麵加一個div2,給div2加內容,由於div沒有內容相當於不存在,
所以div2就會占據div的位置,出現兩個浮動框在div2上面的效果,但不是我們想要的結果,這就是float的副作用。如下圖
float:值 值可選為left 向左浮動,right 向右浮動,none 預設值,不浮動
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .t1{
            width: 200px;
            height: 200px;
            float: left;
            background-color: aqua;
        }
        .t2{
            width: 300px;
            height: 200px;
            float:right;
            background-color: red;
        }
        .t3{
            width: 400px;
            height: 300px;
            background-color: blue;
        }
        .t4{
            width: 600px;
        }
    </style>
</head>
<body>
    <div class="t4">
        <div class="t1"></div>
        <div class="t2"></div>
    </div>
    <div class="t3"></div>
</body>
</html>
副作用代碼

  解決浮動副作用的方法

  1,可以為div1標簽設置一個高度,占據位置

  2,clear屬性

clear屬性規定元素的那一側不允許其他浮動元素
clear:值
值可選:left  在左側不允許浮動元素,right 在右側不允許浮動元素,both 左右兩側都不允許,none 允許,inherit 從父元素繼承clear屬性的值
解決副作用,我們可以在div2標簽中加上clear屬性,是可以解決問題的,但這種情況下,我們在添加標簽時都要判斷是否有浮動,很麻煩

所以我們在有浮動的標簽之後加上一個標簽,內容為空,含有clear屬性也可以解決問題
<div class="t1"></div>
<div class="t2"></div> 上面兩個為浮動標簽
<div class="t5" style="clear: both"></div> 這為解決副作用加的含有clear屬性的標簽,由於內容為空,也不會占位置

最常用的寫法,用偽元素清除法
.clearfix:after{
content: '';
display: block;
clear: both;
}
<div class="t4 clearfix">
<div class="t1"></div>
<div class="t2"></div>
</div>

  十四、overflow溢出屬性

overflow:值
值可選:visible 內容不會被修剪,會呈現在元素框之外,hidden 內容會被修剪,並且溢出的內容是不可見的,scroll 內容會被修剪,但是瀏覽器會顯示滾動條以便查看溢出的內容,auto 如果內容被修剪,則瀏覽器會顯示滾動條以便查看溢出的內容,
inherit 從父元素繼承overflow的值

overflow還可以寫成overflow-x(設置水平方向,只出現x軸的滾動條),overflow-y(設置垂直方向,只出現y軸的滾動條)

  圓形頭像的製作代碼

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        div{
            width: 200px;
            height: 200px;
            border: 1px solid black;
            border-radius: 50%;
            overflow: hidden;
        }
        img{
            max-width: 100%;
        }
    </style>
</head>
<body>
    <div>
        <img src="張鈞蜜.png" alt="">
    </div>
</body>
</html>
圓形頭像

  十五、position定位屬性

  1,static,預設值,無定位,為標簽設置top,left等值都沒作用的

  2,relative(相對定位)

相對定位是相對於該元素在文檔流中的原始位置,在這種情況下,雖然原來的位置沒有了內容,但依然占據位置,即占據文檔流空間
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .t1{
            width: 100%;
            height: 200px;
            background-color: blue;
        }
        .t2{
            width: 200px;
            height: 100px;
            background-color: aqua;
            position: relative;
            top: 50px;
            left: 100px;
        }
    </style>
</head>
<body>
    <div class="t1"></div>
    <div class="t2"></div>
</body>
</html>
相對定位

  3,absolute(絕對定位)

設置為絕對定位的元素框會從文本流出來,也就不會占據原來的位置,同時也會出現父級塌陷的現象,絕對定位是相對於父級位置來的(父級必須是relative,也就是父級要是相對定位的,父級沒有,就找父級的父級),若都沒有,那它的位置相對於body
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        .t1{
            width: 100%;
            height: 100px;
            background-color: red;
        }
        .t2{
            width: 200px;
            height: 100px;
            position: relative;
            top: 20px;
            left: 300px;
            background-color:greenyellow;
        }
        .t3{
            width: 100px;
            height: 50px;
            background-color: blue;
            position: absolute;
            top: 100px;
            left: 200px;
        }
        .t4{
            width:100px;
            height: 50px;
            background-color: darkgray;
        }
        .t5{
            width: 100%;
            height: 50px;
            background-color: black;
        }
    </style>
</head>
<body>
    <div class="t1"></div>
    <div class="t2">
        <div class="t3"></div>
        <div class="t4"></div>
    </div>
    <div class="t5"></div>
絕對定位

  4,fixed(固定位置,不管頁面怎麼滾動,這個元素就固定某個位置)

fixed:元素脫離正常文檔流
<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
    <style>
        #t2{
            width: 100px;
            height: 2000px;
            border:1px solid black;
        }
        #t3{
            width: 100px;
            height: 30px;
            background-color: coral;
            line-height: 30px;
            text-align: center;
            po

您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 來自:https://www.2cto.com/kf/201701/587448.html 侵刪 關鍵字輸入提示詞條 ...
  • 題外話   最近簡直要忙死,所以停更了很久,你們會不會以為我人間蒸發了?   正文之前,請允許我先跑個題,就是關於忙的問題。   做了Freelance,每天過的比上班還累,這完全不是我想要的生活啊?所以痛定思痛,需要檢討一下自己: 1. ...
  • 100——客戶必須繼續發出請求101——客戶要求伺服器根據請求轉換HTTP協議版本200——交易成功201——提示知道新文件的URL202——接受和處理、但處理未完成203——返回信息不確定或不完整204——請求收到,但返回信息為空205——伺服器完成了請求,用戶代理必須複位當前已經瀏覽過的文件20 ...
  • previewImage.js好用的圖片預覽縮放保存插件 ...
  • ES5
    一、數組API實際開發中forEach和map會多一些=>是es6語法中的arrow function舉例:(x) => x + 6相當於function(x){return x + 6;}undefined轉成數字是NaN判斷:arr.every():判斷arr中每個元素是否都符合要求只有每個元素 ...
  • $img_dir = ROOT_PATH . 'public/upload/card/' . $data['jt_id']; //創建合成圖片存放位置 //自動創建文件夾 if (!file_exists($img_dir)) { mkdir($img_dir, 0755, true); } ... ...
  • 初次翻譯,部分內容並非按字面翻譯,是按本人理解進行了內容重組。如有錯誤望指正。 如下是變數定義和賦值的示例 變數存儲的是一個引用地址。如上的變數name指向了一個值為Bob的String對象。通過var 定義變數是未明確指定類型的,由運行時VM自動推斷,你也可以明確指定類型,如下代碼 如果變數無法確 ...
  • 數據來源: R語言自帶 co2 數據集 分析工具:R 3.5.0 & Rstudio 1.1.453 本篇分析只是一個簡單的教程,不作深究 兩個視圖方便查看 ts:time series,時間序列 其中trend為長期趨勢,seasonal為周期性趨勢,random為隨機變化 從結果上看,是個非平穩 ...
一周排行
    -Advertisement-
    Play Games
  • 示例項目結構 在 Visual Studio 中創建一個 WinForms 應用程式後,項目結構如下所示: MyWinFormsApp/ │ ├───Properties/ │ └───Settings.settings │ ├───bin/ │ ├───Debug/ │ └───Release/ ...
  • [STAThread] 特性用於需要與 COM 組件交互的應用程式,尤其是依賴單線程模型(如 Windows Forms 應用程式)的組件。在 STA 模式下,線程擁有自己的消息迴圈,這對於處理用戶界面和某些 COM 組件是必要的。 [STAThread] static void Main(stri ...
  • 在WinForm中使用全局異常捕獲處理 在WinForm應用程式中,全局異常捕獲是確保程式穩定性的關鍵。通過在Program類的Main方法中設置全局異常處理,可以有效地捕獲並處理未預見的異常,從而避免程式崩潰。 註冊全局異常事件 [STAThread] static void Main() { / ...
  • 前言 給大家推薦一款開源的 Winform 控制項庫,可以幫助我們開發更加美觀、漂亮的 WinForm 界面。 項目介紹 SunnyUI.NET 是一個基於 .NET Framework 4.0+、.NET 6、.NET 7 和 .NET 8 的 WinForm 開源控制項庫,同時也提供了工具類庫、擴展 ...
  • 說明 該文章是屬於OverallAuth2.0系列文章,每周更新一篇該系列文章(從0到1完成系統開發)。 該系統文章,我會儘量說的非常詳細,做到不管新手、老手都能看懂。 說明:OverallAuth2.0 是一個簡單、易懂、功能強大的許可權+可視化流程管理系統。 有興趣的朋友,請關註我吧(*^▽^*) ...
  • 一、下載安裝 1.下載git 必須先下載並安裝git,再TortoiseGit下載安裝 git安裝參考教程:https://blog.csdn.net/mukes/article/details/115693833 2.TortoiseGit下載與安裝 TortoiseGit,Git客戶端,32/6 ...
  • 前言 在項目開發過程中,理解數據結構和演算法如同掌握蓋房子的秘訣。演算法不僅能幫助我們編寫高效、優質的代碼,還能解決項目中遇到的各種難題。 給大家推薦一個支持C#的開源免費、新手友好的數據結構與演算法入門教程:Hello演算法。 項目介紹 《Hello Algo》是一本開源免費、新手友好的數據結構與演算法入門 ...
  • 1.生成單個Proto.bat內容 @rem Copyright 2016, Google Inc. @rem All rights reserved. @rem @rem Redistribution and use in source and binary forms, with or with ...
  • 一:背景 1. 講故事 前段時間有位朋友找到我,說他的窗體程式在客戶這邊出現了卡死,讓我幫忙看下怎麼回事?dump也生成了,既然有dump了那就上 windbg 分析吧。 二:WinDbg 分析 1. 為什麼會卡死 窗體程式的卡死,入口門檻很低,後續往下分析就不一定了,不管怎麼說先用 !clrsta ...
  • 前言 人工智慧時代,人臉識別技術已成為安全驗證、身份識別和用戶交互的關鍵工具。 給大家推薦一款.NET 開源提供了強大的人臉識別 API,工具不僅易於集成,還具備高效處理能力。 本文將介紹一款如何利用這些API,為我們的項目添加智能識別的亮點。 項目介紹 GitHub 上擁有 1.2k 星標的 C# ...