当前位置: 首页 > Web前端 > CSS

小于12px的文字居中问题

时间:2023-03-30 18:36:05 CSS

前几天在做项目的过程中,当字体小于12px的时候,很难完全居中显示,意思是有点抓狂.各种百度找到一个貌似不错的方法。总结出来分享给你我。在PC端的Chrome浏览器中,小于12像素的字体仍然以12像素显示,即使-webkit-text-size-adjust:none;设置了,好像没有效果。经过实验,我发现下面两种方法比较好用。读者可以听我详细说说。方法1使用transform:scale()如果设计同学给你的字体大小是10px,而你设置了font-size:10px,此时在PC端测试是看不到效果的;一个有用的方法是:font-size:12px//PC端Chrome最小字体transform:scale(0.833333333);高度:12px;//设计给的高度是10pxline-height:12px;这种方法可以将字体缩小到将近10px,但是包裹字体的宽度、高度,甚至标签(div,p)的边距值都减少了0.8333333。如果设计同学给你的div的高度是20px,为了正确显示20px的高度,你必须把height设置为(20/0.8333333)px,width和margin同理设置;要使其居中,还必须将line-height设置为(20/0.8333333)px;这种计算方式比较复杂,而且这种方式可能会影响其他元素在文档流中的位置,所以产生了下面的方式2。方法二方法二中有两个比较重要的点:(1)对于小于12px的字体,可以先放大一倍,然后使用transform缩小0.5倍(2)就标签的位置而言,可以给定一个相对定位的父元素,可以根据设计图设置这个父元素的高和宽,然后将其定位设置为相对定位,位于父元素的中心(垂直和水平)居中)。HTML结构如下:我要垂直居中,水平居中

cssstyle:.parent{position:relative;宽度:120/@rem;身高:24/@rem;溢出:隐藏;}child{位置:绝对;顶部:-50%;左:-50%;宽度:240/@rem;身高:48/@rem;行高:48/@rem;字体大小:36/@rem;颜色:#ffffff;变换:比例(0.5);背景:#fa5d5f;border-top-left-radius:16/@rem;border-bottom-right-radius:16/@rem;:border-box;}parent和child的关系如下图所示,其中parent相当于占了一个地方,这样缩放就不会影响到parent之外的父元素,因为使用了绝对定位的child用于缩放,并且它不在文档流中,不会影响其他元素在文档流中的位置。另外,附上两个小提示(1)小于12px(或微信webview)的字体不应用line-height,大于等于12px(或非微信webview)的字体应用line-height,所以从此aspect你可以尝试通过csshack来实现,所以如果你想使用line-height来居中,最好不要使用小于12px的字体,可以使用方法1进行缩放;(2)字体最好使用偶数像素,显示基数像素,通常会遇到1个像素偏差,不能完全居中。这个可以和设计专业的学生商量。