整合營銷服務商

          電腦端+手機端+微信端=數據同步管理

          免費咨詢熱線:

          CSS3偽裝元素,盡管沒有得到完美的兼容,仍有很強的

          CSS3偽裝元素,盡管沒有得到完美的兼容,仍有很強的用途

          CSS3增強用戶界面的新屬性中,提供了一個名為appearance的屬性。該屬性的大部分取值主流瀏覽器是不兼容的,但是僅有的兩個取值一定有很強的用途。本篇文章小海前端(頭條號)就為大家來介紹該屬性的用法,并通過一個簡單的實例結合上一篇文章中講到的幾個CSS3屬性來學習它們的綜合用法。

          承接文章:CSS3增強用戶界面屬性,有關溢出、縮放、輪廓與文本選中的解決方案

          技術等級:中級 | 適合有一定的CSS基礎的人士閱讀。

          希望收藏了這篇文章的你同時也可以關注一下“小海前端”的頭條號,因為這些文章都是連載的,并且是經過系統的歸納和總結的。塌下心來認真閱讀,你一定會學到對你有用的知識。

          CSS3所提供的增強用戶界面的屬性以及與此相關的屬性比較多,小海前端(頭條號)將分幾次對其進行講解。所包含的所有增強用戶界面的屬性包括:

          • box-shadow

          • box-sizing

          • overflow-x

          • overflow-y

          • resize

          • outline

          • outline-width

          • outline-style

          • outline-color

          • outline-offset

          • pointer-events

          • user-select

          • appearance

          • content

          • counter-increment

          • counter-reset

          • quotes

          本篇文章為大家講解appearance屬性的用法。

          一、CSS3偽裝元素:

          CSS3技術使用appearance屬性來實現對元素的偽裝。

          CSS3技術使用appearance屬性來實現對元素的偽裝

          該屬性有以下兩個取值可以被瀏覽器兼容:

          • none,去除系統默認的元素外觀。

          • button,將元素偽裝為按鈕。

          首先要聲明,這個屬性現在只有webkit內核的瀏覽器和火狐瀏覽器支持。因此使用的時候需要為該屬性添加瀏覽器兼容性前綴:

          • -webkit-appearance

          • -moz-appearance

          例1:將一個超級鏈接偽裝為按鈕。

          HTML文檔中有如下的一個超級鏈接:

          <a href="#">小海前端(頭條號)</a>

          利用下列CSS代碼將其偽裝為按鈕:

          a{

          text-decoration: none; //去除超級鏈接下方的下劃線

          appearance:button; //偽裝為按鈕

          -webkit-appearance:button; //兼容webkit內核的瀏覽器

          -moz-appearance:button; //兼容Firefox瀏覽器

          width:150px; height:30px; //設置寬度和高度

          text-align: center; //文本水平居中對齊

          line-height: 30px; //文本垂直居中對齊

          }

          上述代碼執行后,得到的最終效果如下圖所示。

          例1的最終效果

          例2:將一個復選框表單元素去除系統默認的外觀。

          HTML文檔中有如下的一個復選框表單元素:

          <input type=”checkbox” value=”1”> 你好

          利用下列CSS代碼將其默認外觀取消掉:

          input[type=checkbox]{

          appearance:none; //去除系統默認外觀

          -webkit-appearance:none; //兼容webkit內核的瀏覽器

          -moz-appearance:none; //兼容Firefox瀏覽器

          }

          上述代碼執行后,復選框中原有的矩形選擇外觀被刪除,只留下后面的文本內容,即“你好”字樣。

          有的小伙伴會說,這和display屬性設置為none不是一樣的效果嗎?注意:appearance屬性取值為none和display屬性取值為none是完全不一樣的。

          • display:none,將元素隱藏,元素本身和元素所占位置均不在頁面中體現,完全消失掉了。

          • appearance:none,將元素偽裝為沒有系統默認外觀的樣式,并不會將元素隱藏掉。

          二、實例:美化表單元素中的下拉菜單

          這個實例首先將表單元素中的下拉菜單的系統默認外觀去除掉,并通過其他CSS樣式對其進行美化。整個實例的最終效果如下圖所示。

          實例的最終效果

          1、在HTML中制作一個下拉菜單表單元素:

          <div>

          <select name="spec">

          <option disabled selected>請選擇您的專業</option>

          <option value="1">計算機網絡技術</option>

          <option value="2">計算機應用</option>

          <option value="3">計算機信息管理</option>

          <option value="4">計算機軟件工程</option>

          </select>

          </div>

          上述代碼中第一個<option></option>標記對中設置了兩個屬性:第一個disabled設置菜單項不可用,保證了這一項是無法選中的;第二個selected設置該菜單項默認是選中項,這樣就可以讓這個用戶無法選中的菜單項在默認情況下展示出來。

          2、利用CSS去除掉系統默認外觀:

          .box select{

          -webkit-appearance:none;

          -moz-appearance:none;

          appearance:none;

          }

          將表單元素的下拉菜單取出系統默認外觀后的效果如下圖所示。

          去除掉系統默認外觀的下拉菜單表單元素

          3、設置容器.box的CSS樣式:

          .box{

          width:240px; height:30px;

          position: relative;

          }

          這段代碼為下拉菜單的外部容器指定了寬度和高度,由于.box并沒有設置任何可見的效果(例如背景或邊框),所以這段代碼對整個效果的外觀是沒有影響的。但是這個容器會影響內部元素的一些效果,將這個容器設置為相對定位,接下來對<select>標記對設置為絕對定位,可以讓.box容器內的元素在容器內進行定位。

          4、設置<select>標記的CSS樣式:

          這主要是一些與外觀有關的CSS樣式設置,包括圓角效果、背景顏色、字體設置、字號大小、首行縮進、元素輪廓等樣式。

          .box select{

          width:240px; height:30px;

          border-radius: 5px;

          background-color: #efefef;

          font-family: Microsoft YaHei;

          font-size: 16px;

          text-indent: 10px;

          outline:none;

          }

          5、為<select>標記添加右側的下三角:

          我們發現,當將下拉菜單系統默認的外觀去除后,表示可以單擊下拉的下三角也被刪除了。這就需要我們在<box></box>標記對內部再添加一個下三角。這里需要用到content屬性,該屬性必須結合偽元素選擇器::before或::after共同使用。

          .box::after{

          content:"▼";

          position: absolute;

          right:5px; top:5px;

          pointer-events: none;

          }

          上述代碼表示在.box的末尾(::after)添加content屬性指定的文本內容,我們為該屬性設置了一個下三角符號,這個符號小伙伴們可以從Word軟件中輸入并復制過去。

          最后一行 pointer-events:none的含義是將這個下三角變為不能接收鼠標事件的狀態,也就是說,單擊這個下三角就好像單擊它的父元素似的,這樣給人的感覺就是單擊下三角能夠拉下來所有的菜單項。

          對于不了解pointer-events屬性的小伙伴,可以參考小海前端(頭條號)書寫的上一篇文章,即《CSS3增強用戶界面屬性,有關溢出、縮放、輪廓與文本選中的解決方案》一文,該文章的最后對pointer-events屬性有講解。

          小海聲明

          在頭條上發表的這些文章都是從前端開發的基礎開始一步一步講起的。我非常希望能有更多的前端開發初學者通過我寫的文章,逐步學到一定的知識,甚至慢慢有了入門的感覺。這些文章都是我這幾年教學過程中的經驗,每寫一篇時我都盡量把握好措辭,用簡單易懂的語言描述,同時精心設計版面,讓版面更加豐富,激發閱讀興趣。所以,每一篇文章可能篇幅不長,但是都要耗費小海老師很久的時間。

          希望收藏了這篇文章的你同時也可以關注一下“小海前端”的頭條號,因為這些文章都是連載的,并且是經過系統的歸納和總結的。塌下心來認真閱讀,你一定會學到對你有用的知識。

          關注“小海前端”,我會繼續為大家奉上更加深入的前端開發文章,也希望更多的初學者跟著學下去,我們共同將前端開發的路努力堅持的走下去。

          文章預告

          在明天的文章中,將為大家講解增強用戶界面的content屬性的使用。該屬性的用法較多,正在學習CSS3技術的小伙伴們一定不要錯過。

          • order就是邊框

          一、以下是邊框最常見的用法,我們先做一個盒子box,給個簡單寬高樣式。

          圖1

          二、這種三個參數的寫法,應該是用得比較多的。

          圖2

          圖3

          三、如果這四條邊,你只想要一條或兩條三條,可以通過top、left、right、bottom來實現。

          圖4

          圖5

          四、再來一條右邊的線。

          圖6

          圖7

          五、補一個小知識點,圓角。

          圖8

          圖9

          六、border-radius也有四個參數的寫法。

          圖10

          圖11

          七、當圓角圓到一定的程度,盒子就成了一個圓形。

          圖12

          圖13

          擇器

          • 子孫后代選擇器: 通過元素之間的層級關系選擇元素

          格式: body div div p{樣式代碼} 匹配body里面的div里面的div里面的所有p標簽(包括后代)

          • 子元素選擇器: 通過元素之間的層級關系選擇元素

          格式: body>div>div>p{樣式代碼} 匹配body里面的div里面的div里面的所有p子元素(不包含后代)

          • 偽類選擇器: 選擇的是元素的狀態, 元素有哪些狀態? 【包括】:未訪問狀態,訪問過狀態,懸停狀態,點擊狀態

          格式: a:link/visited/hover/active:{樣式代碼}

          <head>
              <meta charset="UTF-8">
              <title>Title</title>
          	<!--樣式-->
          <style>
              #l2{color: green}
              .c1{color: yellow}
              input[type="text"],body>p{background-color: red}
              /*子元素選擇器*/
              body>div>div>p{color: pink}
          		/*子孫后代選擇器*/
              body div div p{background-color: yellow}
              /*偽類選擇器*/
              a:link{color: red;}/*未訪問*/
              a:visited{color: pink}/*訪問過*/
              a:hover{color: green}/*懸停*/
              a:active{color: yellow}/*點擊*/
          </style>
          </head>
          <body>
          <ul>
              <li>劉備</li><li id="l2">關羽</li><li class="c1">張飛</li>
          </ul>
          <p>香蕉</p><p class="c1">蘋果</p>
          <input type="text">
          <input type="password">
          <div>
              <p>p1</p>
              <div><p>p2</p></div>
              <div><div><p>p3</p></div></div>
          </div>
          <a href="http://www.celinfcom">注釋助手</a>

          顏色賦值

          三原色: 紅綠藍 ,red green blue rgb ,每個顏色的取值范圍0-255 顏色賦值的幾種方式:

          • 顏色單詞: 常見顏色單詞都可以使用
          • 6位16進制賦值: #ff0000 3位16進制賦值: #f00
          • 3位10進制賦值: rgb(255,0,0)
          • 4位10進制賦值: rgba(255,0,0,0~1) a=alpha代表透明度
          <style>
                h1{
                  /*color: #ff0000;*/
                  /* color: #f00;*/
                  /*color: rgb(255,0,0);*/
                  color: rgba(255,0,0,0.3);
                }
              #d2{
                width: 200px;
                height: 200px;
                background-color: pink;
                /*設置背景圖片*/
                background-image: url("../b.jpg");
                /*設置背景圖片尺寸*/
                background-size: 100px 100px;
                /*禁止重復*/
                background-repeat: no-repeat;
                /*控制位置:橫向 縱向*/
                /*background-position: 50px 100px;*/
                background-position: 50% 50%;
              }
          </style>
          <body>
          <div id="d2"></div>
          <h1>顏色測試</h1>
          </body>

          背景圖片

          • background-image:url("路徑") 設置背景圖片
          • background-size:100px 200px 設置背景圖片尺寸
          • background-repeat:no-repeat; 禁止重復
          • background-position: 橫向 縱向; 設置背景圖片的位置,兩種方式: ①像素 ②百分比
          <style>
              #d1{
                width: 611px;
                height: 376px;
                background-color: #e8e8e8;
                background-image: url("http://celinf.org/itemCat/study_computer.png");
                background-repeat: no-repeat;
                background-position: 90% 90%;
                background-size: 318px 319px;
              }
          </style>
          <body>
          <div id="d1"></div>
          </body>

          文本和字體相關樣式

          • text-align:left/right/center; 文本水平對齊方式
          • line-height:20px; 設置行高, 多行文本時可以控制行間距, 單行文本時可以控制垂直居中(因為文本默認是在當前所在行內居中)
          • text-decoration:overline上劃線/underline下劃線/line-through刪除線/none去掉文本修飾
          • text-shadow:顏色 x偏移值 y偏移值 濃度; 陰影
          • font-size:20px; 設置字體大小
          • font-weight:bold加粗/normal去掉加粗
          • font-style:italic; 設置斜體
          • font-family: xxx,xxx,xxx; 設置字體
          • font:20px xxx,xxx,xxx; 這只字體大小+字體
          <style>
                div{
                  width: 200px;
                  height: 50px;
                  border: 1px solid red;
                  /*水平對齊方式*/
                  text-align: center;
                  /*行高*/
                  line-height: 50px;
                  /*文本修飾 overline上劃線underline下劃線 line-through刪除線
                          none去掉文本修飾*/
                  text-decoration: line-through;
                  /*文本陰影:顏色 x偏移值 y偏移值  濃度*/
                  text-shadow: red -15px -15px 5px;
                  /*字體大小*/
                  font-size: 20px;
                  /*字體加粗 bold加粗  normal去掉加粗*/
                  font-weight: bold;
                }
              a{
                text-decoration: none;/*去掉自帶下劃線*/
              }
              h3{
                font-weight: normal;/*去掉自帶加粗*/
                /*設置斜體*/
                font-style: italic;
                /*設置字體*/
                /*font-family: cursive;*/
                font: 30px cursive;
              }
              </style>
          <body>
          <h3>這是個h3</h3>
          <a href="">超鏈接</a>
          <div>文本和字體測試</div>
          </body>

          元素的顯示方式display

          • block: 塊級元素的默認值, 特點: 獨占一行 可以修改寬高, 包括: h1-h6 , p, div
          • inline: 行內元素的默認值, 特點: 共占一行 不可以修改寬高, 包括: span, b,i,s,u,超鏈接a
          • inline-block:行內塊元素默認值, 特點: 共占一行 并且可以修改寬高, 包括: img,input
          • none: 隱藏元素
          • 行內元素不能直接修改寬高, 如必須修改則先將元素的顯示方式改成blockinline-block
          <style>
                div{
                  width: 100px;
                  height: 100px;
                  border: 1px solid red;
                }
              span{
                border: 1px solid blue;
                /*行內元素不能修改寬高*/
                width: 100px;
                height: 100px;
                /*把行內元素改成了塊級元素或行內塊元素都可以修改寬高 */
                display: inline-block;
              }
              img{
                width: 100px;
                height: 100px;
                display: none;/*隱藏元素*/
              }
              a{
                width: 132px;
                height: 40px;
                background-color: #0aa1ed;
                /*行內元素不能修改寬高*/
                display: block;
                text-align: center;
                line-height: 40px;
                color: white;
                text-decoration: none;
                font-size: 20px;
                /*圓角 值越大越圓*/
                border-radius: 3px;
          }
          </style>
          <body>
          <a href="">查看詳情</a>
          <img src="../b.jpg" alt="">
          <img src="../b.jpg" alt="">
          <img src="../b.jpg" alt="">
          <div>div1</div>
          <div>div2</div>
          <div>div3</div>
          <span>span1</span>
          <span>span2</span>
          <span>span3</span>
          </body>

          盒子模型

          盒子模型用來控制元素的顯示效果包括: 元素內容content+外邊距margin+邊框border+內邊距padding

          • 元素內容content:控制元素的顯示尺寸
          • 外邊距margin:控制元素的顯示位置
          • 邊框border:控制邊框效果
          • 內邊距padding:控制元素內容的位置

          border邊框效果

          盒子模型之內容content

          • 包括:width和height
          • 賦值方式有兩種:①像素 ②上級元素的百分比
          • 行內元素不能直接修改寬高

          盒子模型之外邊距margin

          • 作用: 控制元素的顯示位置
          • 賦值方式:
          1. margin-left/right/top/bottom:10px; 單獨某個方向賦值
          2. margin:10px; 四個方向賦值
          3. margin:10px 20px; 上下10 左右20
          4. margin:10px 20px 30px 40px; 上右下左 順時針賦值
          • 行內元素上下外邊距無效
          • 上下相鄰彼此添加外邊距 取最大值
          • 左右相鄰彼此添加外邊距 兩者相加
          • 粘連問題: 當元素的上邊緣和上級元素的上邊緣重疊時,給元素添加上外邊距會出現粘連問題,給上級元素添加overflow:hidden解決

          盒子模型之邊框border

          賦值方式:

          1. border:1px solid red; 給四個方向添加邊框
          2. border-left/right/top/bottom:1px solid red; 單獨給某個方向添加邊框
          3. border-radius:10px; 值越大越圓 當值超過寬高的一半時為正圓(前提是正方形)
          <style>
                #d1{
                  width: 100px;
                  height: 100px;
                  border:1px solid red;
                  /*margin-left: 100px;
                          margin-top: 100px;*/
                  /*margin-bottom: 50px;*/
                  margin: 10px 20px 30px 40px;
                }
              #d2{
                width: 100px;height: 100px;border:1px solid red;
                /*上下相鄰彼此添加外邊距 取最大值*/
                margin-top: 100px;
              }
              #s1{
                /*行內元素上下外邊距無效*/
                margin-right: 100px;
              }
              #s2{
                /*左右相鄰彼此添加外邊距 兩者相加*/
                margin-left: 50px;
              }
              #big{
                width: 200px;height: 200px;background-color: green;
                overflow: hidden;/*解決粘連問題*/
              }
              #big>div{
                width: 50px;height: 50px;background-color: red;
                margin-left: 50px;
                /*當元素的上邊緣和上級元素的上邊緣重疊時,給元素添加上外邊距會出現粘連問題*/
                margin-top: 50px;
              }
              #border_div{
                width: 400px;
                height: 200px;
                border: 10px solid blue;
                /*設置圓角*/
                border-radius: 200px;
              }
          </style>
          
          <body>
          <div id="border_div"></div>
          <div id="big">
              <div></div>
          </div>
          <span id="s1">span1</span><span id="s2">span2</span>
          <div id="d1">外邊距測試</div>
          <div id="d2">div2</div>
          </body>

          盒子模型之內邊距padding

          • 作用: 控制元素內容的位置
          • 賦值方式: 和外邊距類似
          1. padding-left/right/top/bottom:10px; 單獨某個方向賦值
          2. padding:10px; 四個方向賦值
          3. padding:10px 20px; 上下和 左右賦值
          4. padding:10px 20px 30px 40px; 上右下左順時針賦值
          • 給元素添加內邊距會影響元素的顯示寬高
          <style>
                div{
                  width: 150px;
                  height: 150px;
                  border:1px solid red;
                  /*內邊距會影響元素的寬高*/
                  padding-top: 50px;
                  padding-left: 50px;
                }
          </style>
          <body>
          <div>內邊距</div>
          </body>

          CSS的三大特性

          • 繼承: 元素可以繼承上級元素文本和字體相關的樣式,部分標簽自帶的效果不受繼承影響, 比如超鏈接字體顏色
          • 層疊:多個選擇器可能選擇到同一個元素,如果添加的樣式不同則全部層疊有效,如果作用的樣式相同 則由優先級決定哪個生效
          • 優先級: 指CSS中的選擇器具有優先級, 作用范圍越小優先級越高, !important>id>class>標簽名>繼承(屬于間接選中)
          <style>
                #d1{
                  color: red;
                }
              div{
                /*!important作用是提升優先級*/
                color: blue !important;
              }
          </style>
          <body>
          <div id="d1">
              <p>這是個p標簽</p>
              <span>這是div里面的span</span>
              <a href="">超鏈接</a>
          </div>
          <span>這是div外面的span</span>
          </body>

          綜合性練習【Demo】

          <style>
                body{
                  font: 12px "simhei", Arial, Helvetica, sans-serif;
                  color: #666;width: 1000px;
                }
              #d1{
                width: 611px;height: 376px;
                background-color: #e8e8e8;
                background-image: url("http://celinf.org/study_computer1.png");
                background-size: 318px 319px;
                background-repeat: no-repeat;
                background-position: 90% 90%;
                overflow: hidden; display: inline-block;
              }
              #d2{margin: 68px 0 0 36px; width: 245px;height: 232px;  }
              #d3{
                width: 375px;height: 376px;
                background-color: #e8e8e8; overflow: hidden;
                background-image: url("http://celinf.org/study_computer.png");
                background-repeat: no-repeat;
                background-size: 292px 232px;
                background-position: 85% 85%; display: inline-block;
              }
              div>div{width: 253px; height: 232px;margin: 39px 0 0 25px; }
              .title_p{
                color: #333333;font-size: 32px;
                margin-bottom: 12px;
                font-weight: lighter;
              }
              .intro_p{font-size: 12px;font-weight: lighter;margin-bottom: 24px;}
              .price_p{
                font-size: 24px;color: #0aa1ed;
                font-weight: bold;margin-bottom: 12px;
              }
              a{
                display: block; background-color: #0aa1ed;
                color: white;
                width: 132px;height: 40px;
                text-align: center; line-height: 40px;
                font-size: 20px; text-decoration: none;
                border-radius: 2px;
              }
          </style>
          <body>
          <div id="d1">
              <div id="d2">
                  <p class="title_p">靈越 燃7000系列</p>
                  <p class="intro_p">
                      酷睿雙核i5處理器|256GB SSD| 8GB內存<br>
                      英特爾HD顯卡620含共享顯卡內存
                  </p>
                  <p class="price_p">¥4999.00</p>
                  <a href="#">查看詳情</a>
              </div>
          </div>
          </div>
          <div id="d3">
              <div>
                  <p class="title_p">顏值 框不住</p>
                  <p class="intro_p">
                      酷睿雙核i5處理器|256GB SSD| 8GB內存
                      <br>
                      英特爾HD顯卡620含共享顯卡內存
                  </p>
                  <p class="price_p">¥6888.00</p>
                  <a href="#">查看詳情</a>
              </div>
          </div>
          </body>

          學習記錄,如有侵權請聯系刪除


          主站蜘蛛池模板: 亚洲AV无码一区二区三区电影| 国产伦一区二区三区高清| 久久精品一区二区三区日韩| 日本韩国一区二区三区| 午夜天堂一区人妻| 国产高清一区二区三区四区| 国产精品日韩欧美一区二区三区| 日韩电影一区二区三区| 国产福利电影一区二区三区| 视频在线一区二区| 亚洲av永久无码一区二区三区| 久久无码人妻一区二区三区| 免费在线观看一区| 精品视频一区在线观看| 日韩AV片无码一区二区不卡| 国产怡春院无码一区二区| 中文字幕乱码人妻一区二区三区| 乱子伦一区二区三区| 日韩人妻精品无码一区二区三区| 久久一本一区二区三区| 日韩爆乳一区二区无码| 久久伊人精品一区二区三区 | 3D动漫精品一区二区三区| 一区二区三区日韩| 精品福利一区二区三区免费视频 | 亚洲国产成人久久综合一区77| 在线免费视频一区| 动漫精品第一区二区三区| 亚洲av成人一区二区三区在线观看| 一区二区免费电影| 中文字幕一区二区三区四区| 国产亚洲福利精品一区| 老熟女五十路乱子交尾中出一区 | 中文字幕精品亚洲无线码一区| 中文字幕久久亚洲一区| 一夲道无码人妻精品一区二区| 日韩免费无码一区二区三区| 国产手机精品一区二区| 天天躁日日躁狠狠躁一区| 久久久国产一区二区三区| 免费视频一区二区|