尝试与CSS进行箭头链接。 This one适用于Firefox,但在具有箭头位置的IE和基于webkit的浏览器中存在问题。双div用于居中链接内容。有什么建议吗?
content
<a href="#" class="readmore">
<div>
<div>
link content
</div>
</div>
</a>
content
CSS
.readmore {
text-decoration:none;
}
.readmore > div {
display: table;
height: 30px;
//width: 100%;
background: #008a00;
transition: background 0.2s;
}
.readmore > div:hover {
background:orange;
}
.readmore > div::after {
content:"";
display:inline;
position:absolute;
border: 15px solid;
margin-top:-15px;
border-color:transparent transparent transparent #008a00;
transition: border-left-color 0.2s;
}
.readmore > div::before {
content:"";
display:inline-block;
width:6px;
position: static;
background:#008a00;
transition: background 0.2s;
}
.readmore > div:hover::after {
border-left-color:orange;
}
.readmore > div > div {
display: table-cell;
//text-align: center;
vertical-align: middle;
color:white;
}
答案 0 :(得分:2)
您应该top
明确将0
设置为:after
元素,并且还要记住为position:relative
元素设置div
,以便绝对定位按预期工作:
.readmore > div::after {
...
top:0;
}
.readmore > div {
...
position:relative;
}
注意:应删除否定的margin-top
。问题的原因是您使用了否定margin-top
(可能是通过反复试验直到它在FF中看起来没问题),但该位置还取决于top
和left
。这些属性的默认值由不同的浏览器以不同的方式实现,唯一的解决方案是显式设置top
,left
并记住规则以确定包含绝对定位元素的块。 (最近的祖先,其位置为absolute
或relative
)。
答案 1 :(得分:1)
试试此代码 - &gt;
HTML :
<div>content</div>
<a href="#">Link</a>
<div>content</div>
CSS :
a{
padding:10px;
background:#2ecc71;
display:inline-block;
position:relative;
}
a:hover{
background:orange;
}
a:hover:after{
border-left: 20px solid orange;
}
a:after {
display: inline-block;
content: "";
width: 0;
height: 0;
border-top: 20px solid transparent;
border-bottom: 20px solid transparent;
border-left: 20px solid #2ecc71;
position: absolute;
right:-20px;
top:0;
}
边框宽度以及右侧和顶部位置可根据您的需要进行调整