我有5个框,其中包含悬停时更改的文字。
然而,如果'内容'一个盒子有一条以上的线条,它会略微推下其他盒子。
另外,如何垂直居中?行高是作业,但有些文本不止一行。垂直对齐似乎也适用于整个div而不仅仅是内容中的文本
.image {
width: 204px;
height: 204px;
background-image: url('imglink');
display: inline-block;
background-repeat: no-repeat;
margin-left: 22px;
margin-right: 22px;
font-family: "Verdana", Geneva, sans-serif;
color: white;
font-size: 11pt;
}
.image:hover{
cursor: pointer;
}
.image:after {
width: 204px;
height: 204px;
display: inline-block;
background-repeat: no-repeat;
/* Content is inserted */
content: 'This text is already there';
}
.image:hover:after{
background-image: url('/imglink');
cursor: pointer;
content: 'This text will appear on hover';
}

<div class="image">
</div>
&#13;
这里是CSS,除了不同的内容外,所有5个框都相同。 在搜索&#34;内容&#34;时遇到大量困难。谷歌并没有真正想出CSS&#34;内容&#34;
这是一个小提琴:https://jsfiddle.net/su8bytdc/7/
答案 0 :(得分:0)
好的,请尝试将vertical-align: top
添加到您的图片类
.image{
vertical-align: top;
}
答案 1 :(得分:0)
试试这个: -
.image img {
position: relative;
top: 50%;
-webkit-transform: translateY(-50%);
-ms-transform: translateY(-50%);
transform: translateY(-50%);
}
====================================
Base styling, to make the demo more fancy
==================================== */
body {
font-family: Roboto, sans-serif;
background: #2C3D51;
padding: 1em;
-webkit-font-smoothing: antialiased;
}
h2 p {
text-align:center;
margin: 0;
font-size: 16px;
position: absolute;
top: 5px;
right: 5px;
font-weight: bold;
color: #ECF0F1;
}
section {
display: block;
max-width: 500px;
background: #E74C3C;
margin: 0 auto 15px;
height: 150px;
border-radius: .2em;
position: relative;
color: white;
text-align:center;
-webkit-transform-style: preserve-3d;
-moz-transform-style: preserve-3d;
transform-style: preserve-3d;
}
<section class="text"> <h2>Text</h2> <p>I'm vertically aligned! Hi ho Silver, away!</p></section><section class="image"> <h2>Images</h2> <img src="https://placeholdit.imgix.net/~text?txtsize=33&txt=120%C3%9770&w=120&h=70">
答案 2 :(得分:0)
要解决换行问题,只需将overflow: hidden
放在容器元素上即可。但请注意,如果您以后想要在框中包含大量文本,这将阻止所有文本溢出意义。
要将框内的文本居中,请从伪元素中删除宽度和高度,然后使用变换hack。在想要居中的元素上使用它(记住使其容器相对):
position: absolute; (relative could also work here)
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
最后,当使用flexbox时,所有这些问题都不再是问题,所以我建议学习它,因为它很棒。
答案 3 :(得分:0)
https://jsfiddle.net/4tmx5f46/
font-family: "Verdana", Geneva, sans-serif;
vertical-align:middle;
字体声明导致了下拉框。你需要'vertical-align:middle;'盒子本身就是为了防止这种情况发生。
将中间的内容与vertical-align对齐可能是一个坏主意。垂直对齐可能是一个真正的卑鄙小人。
来源: http://christopheraue.net/2014/03/05/vertical-align/
那就是说,你应该查看本指南。 https://css-tricks.com/centering-css-complete-guide/
如果你坚持以这种方式集中,那么我建议你使用:: before和:: after - &gt;的结合来修改所放置的内容。使用:: before将所有内容击倒50%,然后使用真实内容启动:: after。
(或者只是绝对定位,转换,并完成它)
如果你想要一个我正在描述的例子,评论,我会为你做点什么。
早些时候混淆道歉。抓住错误标签的网址
答案 4 :(得分:0)
只需将display: flex
和align-items: center
添加到您的:after选择器,将position: relative
添加到您的div .image
。
要水平对齐内容,只需将text-align: center
添加到.image
,将justify-content: center
添加到:after元素
所以你的更新代码看起来像这样
.image {
position: relative;
width: 204px;
height: 204px;
display: inline-block;
background-color: red;
margin-left: 22px;
display: inline-block;
margin-right: 22px;
font-size: 11pt;
cursor: pointer;
text-align: center;
}
.image:after {
position: absolute;
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
/* Content is inserted */
content: 'This text is already there Even multiple lines';
}
.image:hover:after {
text-align: center;
content: 'This text will appear on hover';
}
<div class="image">
</div>
<div class="image">
</div>
<div class="image">
</div>
<div class="image">
</div>
<div class="image">
</div>