久久久久久久av_日韩在线中文_看一级毛片视频_日本精品二区_成人深夜福利视频_武道仙尊动漫在线观看

CSS :focus-within的具體使用

這篇文章主要介紹了CSS :focus-within的具體使用的相關資料,具有一定的參考價值,感興趣的小伙伴們可以參考一下

CSS的世界真是一個神奇的世界??赡鼙姸嗲岸碎_發者聽說過 :focus 并未聽說過 :focus-within 。那么 :focus-within 是什么鬼。這篇文章,我們就說說 :focus-within 這個東東。

:focus-within是什么

在CSS中 :focus-within 是一個偽類,現在已經被列入到CSS選擇器中(CSS Level 4 selector)。他就像你知道的 :focus 或者 :hover 。 :focus-within 能非常方便處理獲取焦點狀態。當元素本身或其后代元素獲得焦點時, :focus-within 偽類的元素就會有效。

如果文字不好理解,咱們先來看一個簡單的示例:

<div class="form-group">
    <label for="email">
        Your email:
    </label>
    <input type="email" name="email" id="email" placeholder="Enter your email address"/>
</div>

上面是一個簡單的表單,有一個 input 表單控件。

.form-group *:focus {
    background: yellow;
    color: #000;
}
.form-group {
    padding: 10px;
    border: 3px solid transparent
}

.form-group:focus-within {
    border-color: #000;
}

上面的示例中, .form-group 得到焦點的時候, border-color 顏色換成了 #000 。但這不意味著接收鍵盤的焦點,那是因為 <div> 不一定能得到鍵盤的焦點,沒有設置 tabindex 。或者說 div 中的鏈接或 input 元素接收焦點,那么 .form-group 元素將改變邊框顏色。

看到上面的示例,是不是覺得好神奇。在以前要實現類似的效果,我們需要借助JavaScript的腳本。通過 .form-group 的后代元素的鼠標或鍵盤事件,然后給其父元素(或祖先元素,添加對應的樣式)。

:focus-within的使用場景

:focus-within 非常強大,主要是由于偽類在它的任何元素獲取到焦點時都將被激活。當元素包含許多子組件的元素上謹慎使用該偽類。

有了 :focus-within 之后,有一些常見的交互行為就變得非常的簡單,特別是以前需要JavaScript的鍵盤事件的交互行為,我們都可以使用 :focus-within 來替代。

接下來,咱們來看一些 :focus-within 的常見示例。

表格行的高亮

一個常見的例子,就是表格行高亮的行為,即鼠標懸浮在表格的行時,顏色變得高亮。這樣的交互樣式可以幫助有視力阻礙的用戶能更好的閱讀一個復雜的表格或長表格。因為突出的顯示,可以使用這些用戶更容易地跟蹤他們當前正在閱讀的表格行。以前常常實現的方式是通過 :hover 來改變表格行的樣式,這種方案對于正常的用戶而言是一件易事,但如果你的用戶對于一些操作鼠標有阻礙的用戶而言,那 :hover 就有點蛋疼了。如果你是追求完美的話,你可能會通過JavaScript的鍵盤事件給表格行添加樣式。

那么有了 :focus-within 之后,我們就可以和JavaScript說拜拜。我們可以這樣來設置樣式:

上面的示例展示了如何使用 :focus-within 來突出表格的整個行。如果在特定的表格行中有一個可獲取焦點的可用元素,這里所指的是通過鍵盤獲取焦點。比如上面這個示例,表格中有 <a> 元素,你懂的, a 元素是可以通過鍵盤獲取焦點的。

這個時候你只需要在樣式中添加:

tbody tr:focus-within,
tbody tr:hover {
    background: rgba(lightBlue, .4);
}

下拉菜單

下拉菜單是我們最常的Web組件之一。當我第一次看到 :focus-within 這個偽類時,我想到的第一個使用場景就是下拉菜單。

上面的示例中,JavaScript是用來跟蹤用戶鍵盤焦點在一個導航下拉菜單中的。如果JavaScript檢測到鍵盤焦點在一個鏈接上,那么給 .nav__list_drop 添加一個 .has-focus 類。當 li 有了 .has-focus 類時,他的子元素就會顯示出來,也就是下拉菜單會顯示出來。

這樣的效果,我們可以直接通過 :focus-within 來取代JavaScript腳本的功能。使用 .nav__list__drop:focus-within 替代 .nav__list__drop.has-focus 。當你操作鍵盤,讓下拉菜單項獲得焦點時,就會顯示下拉菜單。

.nav__list a:focus + .nav__list__drop,
.has-drop:hover .nav__list__drop,
.nav__list__drop:focus-within {
    opacity: 1;
    transform: translateY(0px);
    height: auto;
    z-index: 1;
}

Off-screen Nav

Off-screen Nav是在移動端上常見的一個效果。那么這個效果我們也可以通過 :focus-within 來實現。詳細代碼可以看下面這個示例:

瀏覽器兼容性

:focus-within 雖然很有意思,但很多同學擔心它的兼容性。通過Caniuse,我們可以看到瀏覽器對其支持度情況:

總結

【網站聲明】本站除付費源碼經過測試外,其他素材未做測試,不保證完整性,網站上部分源碼僅限學習交流,請勿用于商業用途。如損害你的權益請聯系客服QQ:2655101040 給予處理,謝謝支持。

相關文檔推薦

這篇文章主要介紹了純css實現照片墻3D效果的示例代碼,可以實現鼠標經過圖片實現改變,具有一定的參考價值,感興趣的小伙伴們可以參考一下
本篇文章主要介紹了純 Css 繪制扇形的方法示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了一份純CSS loading效果代碼示例,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
這篇文章主要介紹了css 實現文字過長自動隱藏功能,需要的朋友可以參考下
本篇文章主要介紹了詳解CSS3 rem(設置字體大小) 教程,小編覺得挺不錯的,現在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
本篇文章主要介紹了CSS3 linear-gradient線性漸變生成加號和減號的方法,具有一定的參考價值,感興趣的小伙伴們可以參考一下
主站蜘蛛池模板: 蜜桃av人人夜夜澡人人爽 | 少妇诱惑av | 人人干免费 | 国产精品伦一区二区三级视频 | 日韩欧美国产不卡 | 欧美性猛交一区二区三区精品 | 国产视频久久 | 天天操天天射综合网 | 成人在线免费 | 成人免费在线小视频 | 精品人伦一区二区三区蜜桃网站 | 日韩淫片免费看 | 天天干天天干 | 狠狠av| 国产三级网站 | 欧美日产国产成人免费图片 | 欧美国产一区二区三区 | 欧美中文字幕一区二区 | 国产精品美女视频 | 一区二区三区在线 | 欧美精品黄 | 国产成人免费视频 | 99精品国产一区二区三区 | 九九亚洲| 日韩欧美专区 | 特级黄一级播放 | 三级成人在线 | 欧美视频三区 | 成人免费区一区二区三区 | 偷拍亚洲色图 | 亚洲三级国产 | 欧美精品一二三区 | 国产综合欧美 | 中文字幕一区在线观看视频 | 精品久 | 色综合久久久久 | 一级片网址| 欧美日韩午夜精品 | 亚洲国产精品激情在线观看 | 日本精品一区二区三区四区 | 成人在线免费 |