整合營銷服務(wù)商

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

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

          CSS中Attribute(屬性選擇器)都有哪些?

          CSS中Attribute(屬性選擇器)都有哪些?

          擊右上方紅色按鈕關(guān)注“小鄭搞碼事”,每天都能學(xué)到知識,搞懂一個問題!

          大家好!我是/小鄭搞碼事/的小鄭

          今天和大家聊一下,CSS中屬性選擇器都有哪些,大家可以借此加深對選擇器的印象。

          關(guān)于屬性選擇器,大概有下面這七種。我們逐個來看一下。

          E[attr]

          匹配有屬性attr的元素。

          比如:a[href]{}

          E[attr=val]

          attr屬性值等于val。

          比如:span[class="error"]{}

          E[attr ~=val]

          attr屬性值有多個空格分開的值,其中有一個值等于val。

          比如:a[title~='db']{}

          E[attr^=val]

          attr屬性值以val開頭

          比如:a[class^="icon-"]{}

          E[attr$=val]

          attr屬性值以val結(jié)尾

          比如:a[href$=".html"]{}

          E[attr*=val]

          attr屬性值含有val

          比如:a[href*="?"]{}

          E[attr|=val]

          attr屬性值由一系列用連字符連拉而且必須是以val開頭。

          比如:

          <p lang="en-gb"></p>

          p[lang|="en"]{}

          (此處已添加圈子卡片,請到客戶端查看)

          文鏈接:https://www.infoworld.com/article/3006630/how-to-work-with-attributes-in-c.html?nsdr=true

          Attribute 在 C# 中是一個非常強(qiáng)大的特性,它能夠給你的程序集添加元數(shù)據(jù)信息。

          Attribute 實(shí)際上是一個對象,它可以與以下元素中的任何一個相關(guān)聯(lián): 程序集、類、方法、委托、枚舉、事件、字段、接口、屬性和結(jié)構(gòu),它會在這些對象上做信息聲明,當(dāng)程序運(yùn)行之后,你可以通過反射來獲取關(guān)聯(lián)到這些對象上的 Attribute 信息,換句話說:你可以通過 Atrribute 向程序集注入一些額外信息,然后在運(yùn)行時通過反射來獲取,attribute 一般由 名字 + 一些可選參數(shù) 構(gòu)成, attribute 名字對應(yīng)著 atrribute 類。

          你可以利用 attribute 去校驗(yàn)?zāi)愕臉I(yè)務(wù)model的正確性, attribute 有兩種:內(nèi)置 + 自定義, 前者是 .net framework 框架的組成部分,后者需要通過繼承 System.Attribute 類來實(shí)現(xiàn)自定義。

          現(xiàn)在來看看代碼怎么寫,Obsolete 特性用來標(biāo)記一個方法是過時的,這個過時的意思是:你不應(yīng)該再使用這個方法了,未來框架也會將其剔除,目前也存在其替代方案。其實(shí)在第三方框架中有很多這樣的例子,下面的代碼片段展示了如何在方法頂部使用 Obsolete 特性。

          
          [Obsolete("This method is obsolete...")]
          public static void DoSomeWork()
          {
          }
          

          如果你在程序中調(diào)用了這個方法,當(dāng)你編譯代碼時,在 Visual Studio 輸出窗口中會現(xiàn)在一些警告信息,如下圖:

          當(dāng)然,如果你一定要忽視它也是可以的,現(xiàn)在,假如你希望你的開發(fā)同事不允許調(diào)用這個方法,那如何去限定呢?哈哈,可以使用 Obsolete 的第二個參數(shù),這個參數(shù)是可選的,下面是 DoSomeWork() 方法的修改版本,請注意這是一個 Boolean 型參數(shù)。

          
          [Obsolete("This method is obsolete...", true)]
           public static void DoSomeWork()
           {
          
           }
          

          當(dāng)把 true 給了這個可選參數(shù)后,再次編譯代碼,你會發(fā)現(xiàn)代碼根本編譯不通過,是不是完美的解決了你的問題,是吧! 截圖如下:

          自定義 attribute

          這一小節(jié)我們來看一下如何去實(shí)現(xiàn)自定義的 attribute,要想自定義實(shí)現(xiàn),可以創(chuàng)建一個類并繼承 System.Attribute 類即可,如下代碼所示:

          
          using System;
          public class CustomAttribute : Attribute
          {
          
          }
          

          要想限定 CustomAttribute 的使用,可以用 AttributeUsage 類去標(biāo)記,這個類包含了如下屬性: ValidOnAllowMultiple,Inherited 等等,這些標(biāo)記都可以限定 CustomAttribute 的使用。

          下面的代碼片段展示了 CustomAttribute 的修改版本,這個類使用構(gòu)造函數(shù)去給內(nèi)部的私有 string 賦值,代碼僅僅用于演示目的。

          
              [AttributeUsage(AttributeTargets.All)]
              public class CustomAttribute : Attribute
              {
                  private string text;
                  public CustomAttribute(string text)
                  {
                      this.Text=text;
                  }
          
                  public string Text { get=> text; set=> text=value; }
              }
          

          當(dāng)然你也可以按需去指定這些 AttributeTargets,如下代碼所示:

          
              [AttributeUsage(AttributeTargets.Class |
              AttributeTargets.Constructor |
              AttributeTargets.Field |
              AttributeTargets.Method |
              AttributeTargets.Property,
              AllowMultiple=true)]
              public class CustomAttribute : Attribute
              {
                  private string text;
                  public CustomAttribute(string text)
                  {
                      this.Text=text;
                  }
          
                  public string Text { get=> text; set=> text=value; }
              }
          

          接下來你可以用反射來獲取應(yīng)用到對象上的所有attributes,代碼如下:

          
                  static void Main(string[] args)
                  {
                      MemberInfo memberInfo=typeof(CustomAttribute);
                      object[] attributes=memberInfo.GetCustomAttributes(true);
                      for (int i=0, j=attributes.Length; i < j; i++)
                      {
                          Console.WriteLine(attributes[i]);
                      }
                  }
          

          接下來我準(zhǔn)備將 CustomAttribute 類應(yīng)用到 下面的 SomeClass 類上。

          
          [CustomAttribute("Hello World...")]
          public class SomeClass
          {
          }
          

          可以著重看下 CustomAttribute 是如何安插在 SomeClass 上的,而且我還傳遞了一個 Hello World... 字符串給它,下面的代碼展示了如何將 CustomAttribute 中的 Text 屬性打印出來。

          
              class Program
              {
                 static void Main(string[] args)
                  {
                      MemberInfo memberInfo=typeof(SomeClass);
                      object[] attributes=memberInfo.GetCustomAttributes(true);
          
                      foreach (object attribute in attributes)
                      {
                          CustomAttribute customAttribute=attribute as CustomAttribute;
          
                          if (customAttribute !=null)
                              Console.WriteLine("Text={0}", customAttribute.Text);
                          else
                              Console.WriteLine();
                      }
                  }
              }
          
              [CustomAttribute("Hello World...")]
              public class SomeClass
              {
              }
          
          
              [AttributeUsage(AttributeTargets.Class |
              AttributeTargets.Constructor |
              AttributeTargets.Field |
              AttributeTargets.Method |
              AttributeTargets.Property,
              AllowMultiple=true)]
              public class CustomAttribute : Attribute
              {
                  private string text;
                  public CustomAttribute(string text)
                  {
                      this.Text=text;
                  }
          
                  public string Text { get=> text; set=> text=value; }
              }
          

          更多高質(zhì)量干貨:參見我的 GitHub: dotnetfly**

          眾號【傳智播客博學(xué)谷】回復(fù)關(guān)鍵詞:前端 PS Java(100G) Python(80G) 大數(shù)據(jù) 區(qū)塊鏈 測試 PPT JS(40g+300教程) HTML 簡歷 領(lǐng)取相關(guān)學(xué)習(xí)資料!

          一、HTML

          1、<image>標(biāo)簽上title屬性與alt屬性的區(qū)別是什么?

          alt屬性是為了給那些不能看到你文檔中圖像的瀏覽者提供文字說明的。且長度必須少于100個英文字符或者用戶必須保證替換文字盡可能的短。

          這包括那些使用本來就不支持圖像顯示或者圖像顯示被關(guān)閉的瀏覽器的用戶,視覺障礙的用戶和使用屏幕閱讀器的用戶等。

          title屬性為設(shè)置該屬性的元素提供建議性的信息。使用title屬性提供非本質(zhì)的額外信息。參考《alt和title屬性的區(qū)別及應(yīng)用》

          2、分別寫出以下幾個HTML標(biāo)簽:文字加粗、下標(biāo)、居中、字體

          加粗:<b>、<strong>

          下標(biāo):<sub>

          居中:<center>

          字體:<font>、<basefont>、參考《HTML標(biāo)簽列表》

          3、請寫出至少5個html5新增的標(biāo)簽,并說明其語義和應(yīng)用場景

          section:定義文檔中的一個章節(jié)

          nav:定義只包含導(dǎo)航鏈接的章節(jié)

          header:定義頁面或章節(jié)的頭部。它經(jīng)常包含 logo、頁面標(biāo)題和導(dǎo)航性的目錄。

          footer:定義頁面或章節(jié)的尾部。它經(jīng)常包含版權(quán)信息、法律信息鏈接和反饋建議用的地址。

          aside:定義和頁面內(nèi)容關(guān)聯(lián)度較低的內(nèi)容——如果被刪除,剩下的內(nèi)容仍然很合理。

          參考《HTML5 標(biāo)簽列表》

          4、請說說你對標(biāo)簽語義化的理解?

          a. 去掉或者丟失樣式的時候能夠讓頁面呈現(xiàn)出清晰的結(jié)構(gòu)

          b. 有利于SEO:和搜索引擎建立良好溝通,有助于爬蟲抓取更多的有效信息:爬蟲依賴于標(biāo)簽來確定上下文和各個關(guān)鍵字的權(quán)重;

          c. 方便其他設(shè)備解析(如屏幕閱讀器、盲人閱讀器、移動設(shè)備)以意義的方式來渲染網(wǎng)頁;

          d. 便于團(tuán)隊(duì)開發(fā)和維護(hù),語義化更具可讀性,遵循W3C標(biāo)準(zhǔn)的團(tuán)隊(duì)都遵循這個標(biāo)準(zhǔn),可以減少差異化。

          5、Doctype作用? 嚴(yán)格模式與混雜模式如何區(qū)分?它們有何意義?

          聲明位于文檔中的最前面,處于 標(biāo)簽之前。告知瀏覽器以何種模式來渲染文檔。

          嚴(yán)格模式的排版和 JS 運(yùn)作模式是,以該瀏覽器支持的最高標(biāo)準(zhǔn)運(yùn)行。

          在混雜模式中,頁面以寬松的向后兼容的方式顯示。模擬老式瀏覽器的行為以防止站點(diǎn)無法工作。

          DOCTYPE不存在或格式不正確會導(dǎo)致文檔以混雜模式呈現(xiàn)。

          6、你知道多少種Doctype文檔類型?

          標(biāo)簽可聲明三種 DTD 類型,分別表示嚴(yán)格版本、過渡版本以及基于框架的 HTML 文檔。

          HTML 4.01 規(guī)定了三種文檔類型:Strict、Transitional 以及 Frameset。

          XHTML 1.0 規(guī)定了三種 XML 文檔類型:Strict、Transitional 以及 Frameset。

          Standards (標(biāo)準(zhǔn))模式(也就是嚴(yán)格呈現(xiàn)模式)用于呈現(xiàn)遵循最新標(biāo)準(zhǔn)的網(wǎng)頁,

          Quirks(包容)模式(也就是松散呈現(xiàn)模式或者兼容模式)用于呈現(xiàn)為傳統(tǒng)瀏覽器而設(shè)計的網(wǎng)頁。

          7、HTML與XHTML——二者有什么區(qū)別

          a. XHTML 元素必須被正確地嵌套。

          b. XHTML 元素必須被關(guān)閉。

          c. 標(biāo)簽名必須用小寫字母。

          d. XHTML 文檔必須擁有根元素。

          參考《XHTML 與 HTML 之間的差異》

          8、html5有哪些新特性、移除了那些元素?

          a. HTML5 現(xiàn)在已經(jīng)不是 SGML 的子集,主要是關(guān)于圖像,位置,存儲,多任務(wù)等功能的增加。

          b. 拖拽釋放(Drag and drop) API

          c. 語義化更好的內(nèi)容標(biāo)簽(header,nav,footer,aside,article,section)

          d. 音頻、視頻API(audio,video)

          e. 畫布(Canvas) API

          f. 地理(Geolocation) API

          g. 本地離線存儲 localStorage 長期存儲數(shù)據(jù),瀏覽器關(guān)閉后數(shù)據(jù)不丟失

          h. sessionStorage 的數(shù)據(jù)在頁面會話結(jié)束時會被清除

          i. 表單控件,calendar、date、time、email、url、search

          j. 新的技術(shù)webworker, websocket等

          移除的元素:

          a. 純表現(xiàn)的元素:basefont,big,center, s,strike,tt,u;

          b. 對可用性產(chǎn)生負(fù)面影響的元素:frame,frameset,noframes;

          9、iframe的優(yōu)缺點(diǎn)?

          優(yōu)點(diǎn):

          a. 解決加載緩慢的第三方內(nèi)容如圖標(biāo)和廣告等的加載問題

          b. iframe無刷新文件上傳

          c. iframe跨域通信

          缺點(diǎn):

          a. iframe會阻塞主頁面的Onload事件

          b. 無法被一些搜索引擎索引到

          c. 頁面會增加服務(wù)器的http請求

          d. 會產(chǎn)生很多頁面,不容易管理。

          參考《iframe的一些記錄》

          10、Quirks模式是什么?它和Standards模式有什么區(qū)別?

          在寫程序時我們也會經(jīng)常遇到這樣的問題,如何保證原來的接口不變,又提供更強(qiáng)大的功能,尤其是新功能不兼容舊功能時。IE6以前的頁面大家都不會去寫DTD,所以IE6就假定 如果寫了DTD,就意味著這個頁面將采用對CSS支持更好的布局,而如果沒有,則采用兼容之前的布局方式。這就是Quirks模式(怪癖模式,詭異模式,怪異模式)。

          區(qū)別:總體會有布局、樣式解析和腳本執(zhí)行三個方面的區(qū)別。

          a. 盒模型:在W3C標(biāo)準(zhǔn)中,如果設(shè)置一個元素的寬度和高度,指的是元素內(nèi)容的寬度和高度,而在Quirks 模式下,IE的寬度和高度還包含了padding和border。

          b. 設(shè)置行內(nèi)元素的高寬:在Standards模式下,給等行內(nèi)元素設(shè)置wdith和height都不會生效,而在quirks模式下,則會生效。

          c. 設(shè)置百分比的高度:在standards模式下,一個元素的高度是由其包含的內(nèi)容來決定的,如果父元素沒有設(shè)置百分比的高度,子元素設(shè)置一個百分比的高度是無效的用

          d. 設(shè)置水平居中:使用margin:0 auto在standards模式下可以使元素水平居中,但在quirks模式下卻會失效。

          11、請闡述table的缺點(diǎn)

          a. 太深的嵌套,比如table>tr>td>h3,會導(dǎo)致搜索引擎讀取困難,而且,最直接的損失就是大大增加了冗余代碼量。

          b. 靈活性差,比如要將tr設(shè)置border等屬性,是不行的,得通過td

          c. 代碼臃腫,當(dāng)在table中套用table的時候,閱讀代碼會顯得異常混亂

          d. 混亂的colspan與rowspan,用來布局時,頻繁使用他們會造成整個文檔順序混亂。

          e. 不夠語義

          參考《為什么說table表格布局不好?》

          12、簡述一下src與href的區(qū)別

          src用于替換當(dāng)前元素;href用于在當(dāng)前文檔和引用資源之間確立聯(lián)系。

          src是source的縮寫,指向外部資源的位置,指向的內(nèi)容將會嵌入到文檔中當(dāng)前標(biāo)簽所在位置

          href是Hypertext Reference的縮寫,指向網(wǎng)絡(luò)資源所在位置,建立和當(dāng)前元素(錨點(diǎn))或當(dāng)前文檔(鏈接)之間的鏈接

          公眾號【傳智播客博學(xué)谷】回復(fù)關(guān)鍵詞:前端 PS Java Python 大數(shù)據(jù) 區(qū)塊鏈 測試 PPT JS HTML 簡歷 領(lǐng)取相關(guān)學(xué)習(xí)資料!


          主站蜘蛛池模板: 精品乱码一区内射人妻无码 | 亚洲AV日韩AV天堂一区二区三区 | 天码av无码一区二区三区四区| 伊人久久一区二区三区无码| 国产乱码精品一区二区三区香蕉| 国产精品综合一区二区| 日本精品一区二区三区在线视频| 国产成人一区二区三区电影网站| 国产一区二区三区视频在线观看| 精品国产一区二区22| 色久综合网精品一区二区| 中文乱码字幕高清一区二区| 日本一区二区三区在线观看视频| 久久精品一区二区影院| 日韩精品无码中文字幕一区二区 | 中文字幕日韩一区二区三区不 | 亚洲一区二区无码偷拍| 亚洲av无码一区二区乱子伦as| 亚洲综合色自拍一区| 国产一区麻豆剧传媒果冻精品| 亚洲一区精品伊人久久伊人| 亚洲av成人一区二区三区在线观看| 国产天堂在线一区二区三区| 成人一区二区三区视频在线观看| 亚洲国产精品一区二区三区在线观看| 无码日韩精品一区二区免费暖暖 | 毛片一区二区三区| 波霸影院一区二区| 3D动漫精品一区二区三区| 高清一区二区三区| 国产精品一区视频| 国产乱码一区二区三区爽爽爽| 色婷婷av一区二区三区仙踪林| 久久婷婷色综合一区二区| 亚洲精品色播一区二区| 久久亚洲综合色一区二区三区| 日本免费一区尤物| 国产精品福利一区二区| 国产自产V一区二区三区C| 日韩视频一区二区在线观看| 99久久精品国产一区二区成人 |