问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

css,不止“突破浏览器12px限制”

发布网友 发布时间:2024-09-25 16:58

我来回答

1个回答

热心网友 时间:2024-09-29 19:46

之前写过一篇文章「小tips:如何摆脱浏览器下12px的限制」,不少人觉得“有点东西”。文中提到的“transform:scale()”方法也是利用了CSS中transform的特点,可以说兼顾了效果和性能。但是它必须考虑height甚至在“动态多行”效果时要用JS辅助的特点也很是让人头疼。

其实还可以用两种方法解决这个限制:

SVG解决文字12px限制

SVG本质上你可以看成是一张图片,给图片设置width:100%就能够跟随容器尺寸拉伸,SVG也是如。并且由于SVG是矢量的,因此,再怎么拉伸我们的文字效果都是清晰细腻的——这种方法的原理就在于此!

SVG中<text>,<tspan>元素可以用来呈现文本,嵌套关系为<text>-><tspan>,个人觉得和HTML中的<p>-><span>关系类似。拿开篇文章中的案例来说,用svg可以这么写:

<divclass="mmcce-text"v-for="(item,index)incouponInfo.thresholdStr":key="index":index="index"><svgwidth="600"height="80"viewBox="0060080"><textfont-family="'PingFangSC','MicrosoftYahei'"font-size="60"x="0"y="1em">{{item}}</text></svg></div>

简单来说就是先绘制一张大图,然后再缩小。反正也不会失真。所以在css中规定好类.mmcce-text的样式后直接对svg设置自适应父元素即可:

svg{width:100%;}

也能达到一样的效果。

CSS新特性:size-adjust

早上吃早餐时偶然打开MDN,发现有一个新特性很有趣:size-adjust,和它配套使用的是unicode-range——用来规定哪些字符遵循size-adjust的规则。

它们都被使用在@font-face特性中。还是拿之前的例子。但是我们要注意一点:对于和入前文案例中说的“后端吐出动态数据”一样的场景中,就大可不必使用unicode-range了,毕竟也没啥用。

@font-face{font-family:smallHeight;src:url(‘/assets/font/PingFangSC-Light.ttf‘),url('/assets/font/PingFangSC-Light.woff'),url('/assets/font/PingFangSC-Light.eot');size-adjust:50%;unicode-range:U+5143;}

它设置的是文字缩小到font-size值的百分之多少!因为它改变的是字体文件底层的字形显示,不受12px尺寸的限制。

其它场景应用

这玩意的另一个场景就需要搭配unicode-range了。比如在电商页面中,前置的“¥”或者后置的“元”、“小数点及后两位数字”的缩小,都可以利用这两个特性完成:

@font-face{font-family:miaoshaJia;src:url(‘/assets/font/PingFangSC-Light.ttf‘),url('/assets/font/PingFangSC-Light.woff'),url('/assets/font/PingFangSC-Light.eot');size-adjust:50%;unicode-range:U+5143;}/**使用*/.price{font-family:miaoshaJia;font-size:24px;color:red;}

unicode-range:U+5143;的意思就是“设置元这个字符的大小匹配size-adjust规则”。U+5143就是“元”的Unicode编码。

否则就只能用两个标签或者:first-letter了...css里面暂时还没有诸如「last-letter」这样的伪类设计。所以总的来说比较“不简洁”。

src中引入的字体

这玩意就需要下载专门的字体库了。比如上面用的就是常用而美观的“苹方字体”。一般来说如果是静态文案使用这种方法完全用不了这么大的字体库,这么说来,这种方案反而对于项目加载是一种“拖累”?

其实不然,我们可以使用比如“字蛛”来提取所需要的几个/几十个文字将他们压缩打成一个新的包,这个包的大小往往只有原来的好多分之一。然后再去引入新的包使用就好。

笔者曾在公司内部分享时就对这种方式做过详细而自以为成熟的解说。随后开始被我司在一些“艺术字”等场景中开始代替图片使用和探索...

不过,唯一有些疑惑的是我曾经在不知道哪看到过这样的写法:src:local('PingFangSC');,遂查找资料,未果,作罢。

苹方字体是ios9上的默认中文字体,苹方黑体不仅字型优美,并且能提升在手机、电脑屏幕上的清晰度和易读性。包含6种字重,分别是苹方黑体常规体、中等、细体、特粗体、特细体、粗体,可以很不错地满足日常设计和阅读的需要。放上“苹方字体库”:PingFang(腾讯微云免密下载链接,速度嘎嘎快)

支持度

只是,这个css特性的支持程度还不乐观。比如Safari就完全不支持,即使如Chrome也仅仅在92版本往后开始支持。仍任重而道远:

结语,亿点点想法

夏天快到了,天气回暖万物复苏,最是好时光。我非常提倡多出去走走欣赏一些美好的事物,顺便提升一下自己的美感(这一条针对我自己)。但要注意防护哦!话说天气一回暖疫情又严重了起来,祈祷,我还想回学校毕个业呢,真的是。然后互联网圈子似乎断崖式下跌,还是要稳住啊?提升自己!近来很是巴适,有春风、朋友、美酒和烧烤。还实现了摸鱼的梦想。我就知道这个公司我来对了...

回到文章内容。svg作为一个矢量图,其在系统支持下能最大程度发挥GPU的性能,提升整体渲染效率,而且展示效果也优于常见图片格式,其非常适合在icon等场景使用。毕竟我们都知道,一般图片格式如PNG、JPEG都无法被GPU直接读取(位图基本都经历了采样、量化、编码的过程),需要先经过CPU解码后再上传到GPU使用,解码后的数据以RGB(A)存储,正常状态下是无压缩的。那么大的图,啧啧。而矢量图在输入时根本不需要采样和量化,最重要的是,减少了文件请求,渲染几乎是无延时的。这就节省了一部分时间,直接起飞~大众点评详情页基本所有的大小数字都是svg做的,也是...离谱!

不管是单一的说图片,还是说页面、css的优化。最主要的无非:“跳过”CPU或GPU介入。在游戏中大放光彩的“纹理压缩技术”其优势之一就是“无需CPU解码能够直接被GPU读取和渲染”!

倒是font-face不能滥用。浏览器对于这种“利器”的加载策略也不是完全放手的那种。浏览器加载WebFonts时按顺序会有三个时期:

阻塞期(BlockPeriod)。在此期间如果字体没有加载完成,那么浏览器会使用font-family指定的字体列表中的后备字体(Fallback)进行渲染,但是显示为空白,也就是对于用户是不可见的。在此期间字体加载完成之后才能正常显示该字体

交换期(SwapPeriod)。跟阻塞期类似,但是在这个时期内,它会在字体加载时,先用后备字体渲染文本并显示出来(而不是显示空白),在此期间字体加载完成之后才能正常的显示该字体

失败期(FailurePeriod)。如果字体加载失败,则使用后备字体显示文本

虽说可以用font-display跳过阻塞期(swap值),但终究是“后置改变”的。如果碰上很拉胯的网络又没有做好前置处理,就很糟糕。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
梦幻西游我这吸血鬼值多少钱 梦幻西游吸血鬼价格问题,这个吸血鬼能卖多少钱啊?MHB比例100元=500W 给... 诚心求解梦幻西游,我这只吸血鬼能值多少钱?我要个能卖出去的价... 梦幻西游手游,我现在69级,买个79的吸血鬼,可以带吗, 我梦幻西游69J号买了个119级吸血鬼,但是不能摆摊出售,那可以跟别人交易... 梦幻西游手游洗出变异吸血鬼不能摆摊 梦幻西游本人80级 有一只吸血鬼 系统不给摆摊 请问能否交易 和平精英 和平精英封号了能注销掉吗? 梦见想蛇一样的东西掉进下水道 梦见包掉到下水道里 uc浏览器极速版多少元宝换一元钱-uc浏览器极速版元宝怎么兑换钱_百度知 ... (匡威)板鞋如何打理(鞋子的白帮上被轮胎橡胶曾的一道道黑)??_百度知... miui稳定版不支持root权限,如您因个人需要必须启用root,请下载使用miu... 红米手机经常出现MIUI稳定版不支持ROOT权限.如您因俱需要必须启用ROOT... Vivo x94 64手机为什么恢复出厂设置后运行内存4G还是只剩下零点几g? 我是个安装队接了个亮化工程,可单价报低了而且是低了一背,现在合同也钱... VIVO就是个垃圾,我手机64G,然后预装软件就占超多空间,还老是内存不足... 煮汤圆时是先放鸡蛋还是先放米酒? vivo64手机怎么修改微信号? ps如何拉渐变色ps怎么拉渐变色块 ps图层怎样设成渐变色? 电脑微信和手机微信能同时在一个微信上吗? 微信红包应不应该收 我是施工企业的物资管理员,这种工作流动性很大,如何做好职业规划... 咖啡豆和可可豆的区别减肥 被网友骗了2000块钱。QQ红包方式给他的。过去一个月了。知道他住浦东... 我好友给我发2000多的红包,叫我随便去买点好吃的,怎么办? 朋友给我发了个2000块的红包代表什么? 作文,要求500字以上,题目自拟。 ...我运动我快乐我阳光的作文,题目自拟字数500字以上记叙文,好的话加2... 我想跟男朋友分手,但是我爱他,舍不得,可是我真的好累,每天猜他的... 我很喜欢一个男生,在一起很累,不在一起又想在一起,我们在一起一个多... 有对方的手机号码,和微信号,怎么给她发红包??? 去云南旅游要准备什么 想去大连旅游,帮忙看看有哪些需注意的问题? ...如果我想在暑假到外地旅行7天,要注意什么?准备什么? ...是很远的又安静的地方旅游散散心 请问大家有什么地方推荐? 中国邮票面值变化 2.2*7钢绞线的公称直径是多少?450米的重量是多少.计算依据是什么 2.2m7英尺是说被套是多少米的 红烧肉煨蘑菇 请问钢绞线4×7φ5,4、7、φ5分别代表什么?理论重量是多少?_百度... 做米酒蛋花汤的小妙招有哪些? 十几年前我存了100块钱现金,结果现在去取就被银行给没收了,为什么... 北京科技职业学院住宿条件怎么样啊 北京科技职业学院女生宿舍怎么样 咖啡的功效有什么 excel绝对引用如何打出来? 一个人怎么干托管班 槽钢的理论重量怎么算