我正在尝试使用CSS创建一个问号内圆字形。基本上看起来应该像©。
a::before {
content: '?';
font-size: 60%;
font-family: sans-serif;
vertical-align: middle;
font-weight: bold;
text-align: center;
display: inline-block;
width: 1.8ex;
height: 1.8ex;
border-radius: 1ex;
color: blue;
background: white;
border: thin solid blue;
}
.infolink:hover::before {
color: white;
background: blue;
border-color: white;
}
<a class="infolink" href="#">a link</a>
这在Firefox上还不错,但在Chrome上,圆圈内的问号位置偏离了中心(我没有IE测试,但我假设最坏的情况)。
我不太懂字体的细微差别。这种方法可以跨平台工作吗?或者我应该给予并使用图像?我这样做是为了保持它与字体的比例。
到目前为止,调整建议的设置仅在特定情况下提供改进。似乎总是有一些字体大小,其中有超过一个舍入误差(超过1个像素)的偏心水平或垂直。我们的目标是让边框适合问号,而不是像我怀疑的那样,让边框适合包含问号的方框。
JSFiddle Link。
6条答案
按热度按时间2q5ifsrm1#
看看这个小提琴:http://jsfiddle.net/hg7nP/7/
只列出我改变的事情:
关于跨浏览器,它可以在所有浏览器中工作,除了IE < 9,其中
border-radius
无法工作。plupiseo2#
基于Abhitalk的答案,我想出了一个响应式的方法,问号和圆圈都按基本字体大小的比例缩放,这样你就可以轻松地设置整个事情的大小:
这样使用:
如果你看到这可以进一步改善,你的意见是非常欢迎的!
gxwragnw3#
看起来你错过了
line-height:1;
添加它,它变得明显更好。我个人认为
font-size:50%
看起来最好,但这是我的观点。Updated Fiddle
hgc7kmma4#
只需使line-height与元素/伪元素的高度相同即可。
yzuktlbb5#
您可以使用Unicode字符来获得更简洁的解决方案。我使用了一个问号与组合包围圈(U+20DD)
xmd2e60i6#
经过测试,在Chrome、Edge和Firefox中保持一致(未测试IE)。
应用于跨度元素:
溶液来源:https://www.kith.org/jed/2020/04/15/two-ways-to-create-a-question-mark-in-circle-icon/
或者,您可以使用第三方库,如Font Awesome,它具有良好的跨浏览器支持。示例如下:https://www.w3schools.com/icons/tryit.asp?filename=tryicons_fa-question-circle