html - 这个冗长的伪类组合是一个有效的陈述吗?
问题描述
这是我的代码:
.fontmenu .fontlist{
position: absolute;
bottom:30px;
display:none;
}
.fontbutton button:hover .fontmenu .fontlist{
display:block;
}
<div class="fontmenu">
<div class="fontbutton">
<button>fonts</button>
</div>
<div class="fontlist">
<div onclick="font(1)">Arial</div>
<div onclick="font(2)">Courier</div>
<div onclick="font(3)">Verdana</div>
<div onclick="font(4)">sans</div>
</div>
</div>
CSS 不工作。当我悬停按钮时,列表不可见。我想知道是否.fontbutton button:hover .fontmenu .fontlist{}
有效。
解决方案
这是你用过的:
.fontbutton button:hover .fontmenu .fontlist{ }
这行不通
为什么它不起作用?继续阅读。我会解释。但首先,让我们看看什么会起作用。
让我们尝试使用一些选择器:
.fontbutton:hover + .fontlist {}
这将起作用
让我们看看它的实际效果:
.fontmenu .fontlist {
bottom: 30px;
display: none;
}
.fontbutton:hover + .fontlist {
display: block;
}
/* No need to include the wrapper fontmenu div,
just target the siblings, ie, fontbutton and fontlist.
The + selector must be used, otherwise, the browser will
think fontlist is the child of fontbutton */
<div class="fontmenu">
<div class="fontbutton">
<button>fonts</button>
</div>
<div class="fontlist">
<div onclick="font(1)">Arial</div>
<div onclick="font(2)">Courier</div>
<div onclick="font(3)">Verdana</div>
<div onclick="font(4)">sans</div>
</div>
</div>
请注意,即使我们将鼠标悬停在按钮的右侧,列表也会变得可见。这是因为我们的目标是 divfontbutton
而不是<button>
元素。因此,当我们悬停 div 而不是按钮时,浏览器使列表可见。
怎么修?
我们需要稍微改变一下html。
.fontmenu .fontlist {
display: none;
}
button:hover + .fontlist {
display: block;
}
<div class="fontmenu">
<button>fonts</button>
<div class="fontlist">
<div onclick="font(1)">Arial</div>
<div onclick="font(2)">Courier</div>
<div onclick="font(3)">Verdana</div>
<div onclick="font(4)">sans</div>
</div>
</div>
看我删除了这个.fontbutton
类并<button>
把.fontlist
. 因此,现在,您可以看到列表仅在我们悬停按钮时可见。
现在你会说我可以在你的 CSS 中添加一些选择器。但我没有,因为你无法定位<button>
然后向下移动到.fontlist
单独的div中。
.fontbutton > button:hover ? .fontmenu > .fontlist{ }
我们将在 的地方遇到问题?
。
- 首先,我们需要下到
.button
. - 向上移动到
.fontbutton
。 - 添加
+
选择器并切换到.fontmenu
. - 下移至
.fontlist
。
在我们下移到 之后.button
,我们不能再上去.fontbutton
。
CSS 没有父选择器之类的东西。
所以,很明显,我们不能那样使用它。
推荐阅读
- ios - NextJS 无法在使用蜂窝连接的 iPhone 上加载
- transactions - Payable Function Solidity - 错误是什么:交易已恢复到初始状态
- go - 使用指针追加到切片 [][]int 时出错
- http - HTTP 协议无连接且默认使用 TCP,这有什么意义?
- css - CSS - 纵横比:在 Safari 浏览器中不起作用
- javascript - javascript Mqtt接收图像并更改src属性
- css - 如何在反应表中对齐标题文本?
- jquery - 获取元素的值并使其成为 XSLT 中属性的值?
- vb.net - VB列表中从'double'到'decimal'和'string'到'double'的转换错误
- javascript - 如何使用 React Redux 动态渲染图标