使用:focus-within实现下拉菜单效果

简介: 使用:focus-within实现下拉菜单效果

源代码:

</div><div>/*</div><div>  General cleanup</div><div>*/</div><div>*,</div><div>*:before,</div><div>*:after {</div><div>  -webkit-box-sizing: border-box;</div><div>          box-sizing: border-box;</div><div>}</div><div>html,</div><div>body {</div><div>  font-family: helvetica, arial, sans-serif;</div><div>  font-size: 18px;</div><div>  margin: 0;</div><div>  padding: 0;</div><div>}</div><div>nav ul,</div><div>nav ol {</div><div>  list-style: none;</div><div>  padding: 0;</div><div>  margin: 0;</div><div>}</div><div>.sr-only {</div><div>  position: absolute;</div><div>  clip: rect(1px, 1px, 1px, 1px);</div><div>  font-size: 1px;</div><div>}</div><div>/*</div><div>  Demo</div><div>*/</div><div>.show-nav {</div><div>  position: fixed;</div><div>  top: 0;</div><div>  right: 0;</div><div>}</div><div>.nav__list {</div><div>  background: #fafafa;</div><div>  border-bottom: 1px solid #444;</div><div>  text-align: center;</div><div>  position: relative;</div><div>  z-index: 2;</div><div>}</div><div>.nav__list > li {</div><div>  display: inline-block;</div><div>}</div><div>.nav__list a {</div><div>  display: block;</div><div>  padding: 20px;</div><div>  position: relative;</div><div>  z-index: 2;</div><div>}</div><div>.nav__list a:hover,</div><div>.nav__list a:focus {</div><div>  background: #222;</div><div>  color: #fff;</div><div>}</div><div>.has-drop {</div><div>  position: relative;</div><div>}</div><div>.nav__list__drop {</div><div>  left: 0;</div><div>  margin: 0;</div><div>  position: absolute;</div><div>  text-align: left;</div><div>  top: 100%;</div><div>  opacity: 0;</div><div>  -webkit-transform: translateY(-20px);</div><div>          transform: translateY(-20px);</div><div>  height: 1px;</div><div>  -webkit-transition: opacity .1s ease-out, -webkit-transform .2s ease-in-out;</div><div>  transition: opacity .1s ease-out, -webkit-transform .2s ease-in-out;</div><div>  transition: transform .2s ease-in-out, opacity .1s ease-out;</div><div>  transition: transform .2s ease-in-out, opacity .1s ease-out, -webkit-transform .2s ease-in-out;</div><div>  overflow: hidden;</div><div>  z-index: 1;</div><div>}</div><div>.nav__list__drop {</div><div>  background: #fafafa;</div><div>  border: 1px solid #444;</div><div>  border-top: 0;</div><div>  min-width: 100%;</div><div>}</div><div>.nav__list__drop a {</div><div>  padding: 12px 20px;</div><div>  white-space: nowrap;</div><div>}</div><div>.nav__list a:focus + .nav__list__drop,</div><div>.has-drop:hover .nav__list__drop,</div><div>.nav__list__drop:focus-within {</div><div>  opacity: 1;</div><div>  -webkit-transform: translateY(0px);</div><div>          transform: translateY(0px);</div><div>  height: auto;</div><div>  z-index: 1;</div><div>}</div><div>/*</div><div>  1. This right here, the :focus-within pseudo-class</div><div>     removes the need for all the JS that was in the</div><div>     original version of this pen, to reveal the</div><div>     dropdown menus on keyboard focus of the primary <a></div><div>     or any of the visually hidden <a>s of the drop down</div><div>     menus.</div><div>*/</div><div>

 

 

   

         

  •        

               下拉菜单

             

           

               

    •            

                     子菜单1

                   

               

               

    •            

                     子菜单2

                   

               

             

           

           

    •        

                 普通链接

               

           

           

    •        

                 下拉菜单2

               

             

                 

      •            

                       子菜单1 的名字稍微有点长

                     

                 

                 

      •            

                       子菜单 2

                     

                 

               

             

           

         

         

        最后的效果:image.png

        相关文章
        |
        5月前
        element-ui下拉框el-select多选出现滚动条闪现
        弹窗组件中放置了el-select下拉框组件,多选项较多时,聚焦弹出下拉选择框时,下方会出现一个横向滚动条闪现一下,虽然不影响使用,但是作为一个追求完美的码农肯定是受不了
        84 0
        |
        6月前
        48zTree - 下拉菜单
        48zTree - 下拉菜单
        16 0
        |
        8月前
        element 下拉菜单el-dropdown如何更改样式?
        element 下拉菜单el-dropdown如何更改样式?
        490 0
        |
        4月前
        |
        XML JavaScript 小程序
        element-ui下拉菜单组件Dropdown
        <div id='app' style="margin:50px;"> <!-- 鼠标滑过显示下拉列表 这里设置了触发的方式,注意触发方式不能使用’:’绑定,以及绑定了触发选项时的方法 --> <el-dropdown trigger="hover" @command="handleCommand" > <span class="el-dropdown-link el-input__inner" style="display:block;width:200px;"> <!-- 没有选项的时候,默认显示的
        45 0
        |
        5月前
        复选框checkbox实现自定义样式
        复选框checkbox实现自定义样式
        26 1
        |
        6月前
        49zTree - 带 checkbox 的多选下拉菜单
        49zTree - 带 checkbox 的多选下拉菜单
        23 0
        |
        6月前
        50zTree - 带 radio 的单选下拉菜单
        50zTree - 带 radio 的单选下拉菜单
        21 1
        |
        7月前
        element-ui框架的el-dialog弹出框被遮罩层挡住了/el-drawer....会生成v-model元素的组件被遮罩层挡住
        element-ui框架的el-dialog弹出框被遮罩层挡住了/el-drawer....会生成v-model元素的组件被遮罩层挡住
        |
        8月前
        element-ui框架的el-dialog弹出框被遮罩层遮挡问题
        element-ui框架的el-dialog弹出框被遮罩层遮挡问题
        222 0
        |
        9月前
        |
        JavaScript
        element-ui的popover弹出框点击取消
        element-ui的popover弹出框点击取消
        186 1