在网页上使用 svg 会导致在 webkit 浏览器中出现奇怪的 css 渲染
Using svg on webpage results in weird css rendering in webkit browsers
我 运行 遇到了一个似乎只发生在 chrome 和 safari 中的奇怪故障。很难用示例代码解释为什么会发生这种情况,但我会尝试说明我在用代码做什么,同时为下面的实际页面提供 link。
首先,我有一个无序列表显示在行内块,所以它可以像文本一样对齐。每个列表项都包含图像标签中的 svg 和带有简短描述的段落,两者都包含在单个锚标签中。我想没什么特别的,但问题是:在 chrome 和 safari 浏览器中,浏览器在段落和图像之间呈现 1px x 大约 15px blue/blackish 的线,我不知道为什么会这样。这是代码:
<div class="wrapper">
<div class="justified-list home-icons">
<ul>
<li>
<a href="#">
<img src="http://voctel.wearebold.nl/wp-content/uploads/2015/02/company-building.svg" />
<br/>
<p>Description</p>
</a>
</li>
<li>
<a href="#">
<img src="http://voctel.wearebold.nl/wp-content/uploads/2015/02/company-building.svg" />
<br/>
<p>Description</p>
</a>
</li>
<li>
<a href="#">
<img src="http://voctel.wearebold.nl/wp-content/uploads/2015/02/company-building.svg" />
<br/>
<p>Description</p>
</a>
</li>
</ul>
<span class="stretcher"></span>
</div><!-- .justified-list -->
</div><!-- .wrapper -->
这里是 css(我使用的是 scss):
.wrapper {
width: 100%;
}
.justified-list {
width: 100%;
text-align: justify;
* {
display: inline;
}
li {
display: inline-block;
vertical-align: top;
}
.stretcher {
display: inline-block;
position: relative;
width: 100%;
height: 0;
}
}
此外,这里提供了一个codepen:
http://codepen.io/smelly586/pen/NPVVYd
如果有人对正在发生的事情有所了解,甚至更好:对此有可能的解决方案,我将不胜感激。
将元素上的 font-size
设置为 0
。您看到的是 HTML.
中空白锚元素的下划线
您可以关闭浏览器默认为锚呈现的 text-decoration: underline;
,但我们假设这不是您想要的。
相反,需要使用 p { font-size: 1rem; }
.
之类的方法将带有文本的元素重置为文档根字体大小(或任何您想要的)
Example Codepen
因此,SCSS/LESS 将是:
.justified-list {
width: 100%;
text-align: justify;
* {
display: inline;
}
li {
display: inline-block;
vertical-align: top;
a {
font-size: 0;
p { font-size: 1rem; }
}
}
.stretcher {
display: inline-block;
position: relative;
width: 100%;
height: 0;
}
}
我 运行 遇到了一个似乎只发生在 chrome 和 safari 中的奇怪故障。很难用示例代码解释为什么会发生这种情况,但我会尝试说明我在用代码做什么,同时为下面的实际页面提供 link。
首先,我有一个无序列表显示在行内块,所以它可以像文本一样对齐。每个列表项都包含图像标签中的 svg 和带有简短描述的段落,两者都包含在单个锚标签中。我想没什么特别的,但问题是:在 chrome 和 safari 浏览器中,浏览器在段落和图像之间呈现 1px x 大约 15px blue/blackish 的线,我不知道为什么会这样。这是代码:
<div class="wrapper">
<div class="justified-list home-icons">
<ul>
<li>
<a href="#">
<img src="http://voctel.wearebold.nl/wp-content/uploads/2015/02/company-building.svg" />
<br/>
<p>Description</p>
</a>
</li>
<li>
<a href="#">
<img src="http://voctel.wearebold.nl/wp-content/uploads/2015/02/company-building.svg" />
<br/>
<p>Description</p>
</a>
</li>
<li>
<a href="#">
<img src="http://voctel.wearebold.nl/wp-content/uploads/2015/02/company-building.svg" />
<br/>
<p>Description</p>
</a>
</li>
</ul>
<span class="stretcher"></span>
</div><!-- .justified-list -->
</div><!-- .wrapper -->
这里是 css(我使用的是 scss):
.wrapper {
width: 100%;
}
.justified-list {
width: 100%;
text-align: justify;
* {
display: inline;
}
li {
display: inline-block;
vertical-align: top;
}
.stretcher {
display: inline-block;
position: relative;
width: 100%;
height: 0;
}
}
此外,这里提供了一个codepen:
http://codepen.io/smelly586/pen/NPVVYd
如果有人对正在发生的事情有所了解,甚至更好:对此有可能的解决方案,我将不胜感激。
将元素上的 font-size
设置为 0
。您看到的是 HTML.
您可以关闭浏览器默认为锚呈现的 text-decoration: underline;
,但我们假设这不是您想要的。
相反,需要使用 p { font-size: 1rem; }
.
Example Codepen
因此,SCSS/LESS 将是:
.justified-list {
width: 100%;
text-align: justify;
* {
display: inline;
}
li {
display: inline-block;
vertical-align: top;
a {
font-size: 0;
p { font-size: 1rem; }
}
}
.stretcher {
display: inline-block;
position: relative;
width: 100%;
height: 0;
}
}