我想实现Read More按钮的以下外观:
除了读取旁边的行之外,还有以及伪元素之前和之后使用的更多单词。
添加线条的最佳方法是什么?
CSS / HTML / Demo
.read-more {
background: red;
-webkit-border-radius: 50%;
-moz-border-radius: 50%;
-khtml-border-radius: 50%;
border-radius: 50%;
width: 4rem;
height: 4rem;
display: block;
margin: 0px auto;
position: relative;
font-size: 1.4rem;
-moz-box-shadow: 1px 3px 7px 0px #aaa;
-webkit-box-shadow: 1px 3px 7px 0px #aaa;
box-shadow: 1px 3px 7px 0px #aaa;
}
.read-more::before {
content: "read";
color: red;
position: absolute;
top: 50%;
left: -3.2rem;
margin-top: -0.75rem;
}
.read-more::after {
content: "more";
color: red;
position: absolute;
top: 50%;
right: -3.2rem;
margin-top: -0.75rem;
}
.read-more img {
width: 60%;
margin: 0px auto;
position: absolute;
top: 50%;
margin-top: -.60rem;
left: 50%;
margin-left: -1.15rem;
}
<a class="read-more" href="#">
<img src="http://i.stack.imgur.com/jT5el.png">
</a>
答案 0 :(得分:5)
让我们尽可能地保持语义:
em
单位以保持一切顺利有了这些,我们就可以通过一个HTML元素获得很好的结果:
<a href="#">Read More</a>
否定text-indent
与word-spacing
一起工作以放置&#34;阅读更多&#34;背景图片周围的文字。
@media
用于在视口变宽时增加线条长度
a {
font-family: helvetica;
background: #E20025 url(http://i.stack.imgur.com/jT5el.png) center no-repeat;
border-radius: 50%;
width: 50px;
display: block;
white-space: nowrap;
padding: 1em 0 1em 0;
text-indent: -3em;
word-spacing: 4em;
text-decoration: none;
margin: 0 auto;
position: relative;
color: #E20025;
box-shadow: 0 0 5px;
}
a:before,
a:after {
content: '';
height: 1px;
background: #CCC;
width: 7em;
display: block;
position: absolute;
height: 2px;
top: 1.5em;
}
a:before {
left: -11em;
}
a:after {
right: -11em;
}
/*Modify @media as required*/
@media only screen and (min-width: 515px) {
a:before,
a:after {
width: 9em;
}
a:before {
left: -13em;
}
a:after {
right: -13em;
}
}
@media only screen and (min-width: 570px) {
a:before,
a:after {
width: 10em;
}
a:before {
left: -14em;
}
a:after {
right: -14em;
}
}
@media only screen and (min-width: 620px) {
a:before,
a:after {
width: 12em;
}
a:before {
left: -16em;
}
a:after {
right: -16em;
}
}
@media only screen and (min-width: 800px) {
a:before,
a:after {
width: 17em;
}
a:before {
left: -21em;
}
a:after {
right: -21em;
}
}
&#13;
<a href="#">Read More</a>
&#13;
答案 1 :(得分:0)
我认为你不能使用“内容”。你可以在之前和之后使用“border”元素,或者使用JavaScript。:
jQuery("href").append("<hr>");
答案 2 :(得分:0)
这是jsfiddle
代码
HTML
<div id="wrapperdiv">
<div id="somediv"></div>
<a class="read-more" href="#"><img src="..."/></a>
</div>
CSS
#wrapperdiv {
position: relative;
}
#somediv {
border: 1px solid #000;
position: absolute;
top: 50%;
width: 100%;
z-index: 1;
}
.read-more {
background: red;
z-index: 2;
...
}
.read-more::before {
...
background-color: #FFF;
}
.read-more::after {
...
background-color: #FFF;
}