html - “父”元素的边框落后于 :after-element
问题描述
我正在创建一个带有按钮形状阴影的透明轮廓按钮。问题是按钮的边框在:after
元素后面。见下文。
如果我添加overflow: hidden
到切换按钮类,我可以看到完整的边框,但“阴影”不会超出边框。大纲确实有点用,但在点击、聚焦等事件时会被删除。因此,如果可能的话,我想使用边框。
编辑:我删除了z-index: 1
它,当按钮没有嵌套在 div 内(带有背景颜色)时它工作。
.background-color {
background-color: red;
height: 250px;
width: 250px;
}
.toggle-button {
padding: 10px 25px;
background-color: transparent;
border: 3px solid #000000;
position: relative;
z-index: 1;
top: 0;
left: 0;
transition: all .2s ease;
}
.toggle-button:hover {
left: 4px;
top: 4px;
}
.toggle-button:after {
background-color: #eeeeee;
width: 100%;
height: 100%;
position: absolute;
left: 6px;
top: 6px;
z-index: -1;
content: "";
box-sizing: content-box;
transition: all .2s ease;
}
.toggle-button:hover:after {
left:0px;
top: 0px;
}
<div class="background-color">
<button class="toggle-button">Toggle me</button>
</div>
解决方案
div {
background: red;
position: relative;
z-index: 0;
padding: 20px;
}
.toggle-button {
padding: 10px 25px;
background-color: transparent;
border: 3px solid #000000;
position: relative;
top: 0;
left: 0;
transition: all .2s ease;
}
.toggle-button:hover {
left: 4px;
top: 4px;
}
.toggle-button:after {
background-color: #eeeeee;
width: 100%;
height: 100%;
position: absolute;
left: 6px;
top: 6px;
z-index: -1;
content: "";
box-sizing: content-box;
transition: all .2s ease;
}
.toggle-button:hover:after {
left:0px;
top: 0px;
}
<div>
<button class="toggle-button">Toggle me</button>
</div>
推荐阅读
- javascript - React:当 .map 函数的值与字符串值匹配时,如何返回带有按钮的表格
- powershell - 从 powershell 调用中获取特定文本
- java - 在Java数据中使用iText 7从HTML生成PDF垂直显示在PDF中
- python - 导航目录
- dynamic - 将 SwashBuckle 与 Microsoft.OpenApi.Models.OpenApiDocument 一起使用
- python - 使用 Python 检查发电机表中是否存在项目
- excel - 如何根据单元格值连接excel VBA中的列和行标题
- python - 无法使用 geopandas 加载 geojson 文件
- elasticsearch - 在 kibana 仪表板中过滤特定日期
- c++ - C ++中复杂数据的廉价可修改数据结构