【问题标题】:CSS how to make div visible on focus not workingCSS如何使div在焦点上可见不起作用
【发布时间】:2018-05-09 13:06:20
【问题描述】:

我正在尝试使 div 元素在焦点上可见,但它不起作用。如果我将焦点更改为悬停它会起作用

JSFIDDLEhttps://jsfiddle.net/9bo81jyy/8/

HTML

<div class="test">
  <nav class="nav">
    <ul class="navtabs">
      <li>
        <a href="showMe/1">
          <div class= "inside">
            <div tabindex="0" class="delete">
              <button tabindex="-1" class="fa-times-circle"> </button>
            </div>
          </div>
        </a>
      </li>
    </ul>
  </nav>
</div>

CSS

.nav > ul.navtabs > li > a > div:focus .delete{
  display: inline !important;
}
.delete{
  display: none;
}

【问题讨论】:

  • 焦点发生在你&lt;tab&gt; 到一个元素上。 &lt;div&gt; 元素默认情况下不可聚焦(Google 'tabindex html')。在链接中放置&lt;button&gt; 也是一个坏主意。当您按下&lt;button&gt; 时,您不想去showMe/1 对吧? :)
  • 按钮是一个关闭图标。为 div 添加了标签索引,使其可聚焦
  • 是的,但是“关闭”图标位于“showMe/1”链接中,这意味着单击按钮可能会触发链接。在这种情况下,可能不会执行按钮操作。一般来说,将它移到链接标签之外会更好,因为它服务于它自己的目的(或者好吧,所以我认为:))。
  • 您不能将abutton 等“交互式”元素相互嵌套,这是无效的HTML。

标签: html css css-selectors


【解决方案1】:

只有a 标记是可聚焦的,所以使用下面的代码就可以了……我已经更新了jsfiddle

.nav > ul.navtabs > li > a:focus .delete{
  border: 1px solid red;
  display: inline;
}

【讨论】:

    【解决方案2】:

    由于这个 CSS,这个 &lt;div tabindex="0" class="delete"&gt; 在 DOM 中不可用:

    .delete{
      display: none;
    }
    

    这样&lt;div&gt; 永远不会被点击,也永远不会获得焦点。

    尝试关注&lt;a&gt;标签:

    ul.navtabs a:focus .delete{
      display: inline !important;
    }
    

    并删除&lt;div&gt; 上的tabindex="0"

    【讨论】:

      猜你喜欢
      • 2017-02-06
      • 1970-01-01
      • 1970-01-01
      • 2018-08-17
      • 1970-01-01
      • 1970-01-01
      • 2011-04-02
      • 2017-07-12
      相关资源
      最近更新 更多