-
Notifications
You must be signed in to change notification settings - Fork 407
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
行内样式自动转换vw vh 不生效 #147
Comments
是的, 得自己写方法转换 /** px 转 vw, 375 是设置的屏幕宽度 */
export const px2vw = (px: number): string => `${(window.screen.width / 375) * px}vw` |
你写的这个,我感觉好怪啊 window.screen.width 不就是375 嘛? |
每个设备的 window.screen.width 的值不一样,iPhone SE 是 375,iPhone XR 是 414 |
如果是vite脚手架的react框架可以使用https://github.com/yozojo/inline-px-to-viewport,处理内联style的px,如果对你有帮助,可以给star吗 |
@LuoRiWuSheng luo 大佬, 请教下, 设计图是1920x1080(宽x高), 量的设计图上一个元素左侧100px,宽200px,高100px,字体大小20px, 公式是这样吗? export const px2vw = (px: number): string => `${(window.screen.width / 1920) * px}vw`
.box{
margin-left: px2vw(100); // 19.53125vw
width:px2vw(200); // 39.0625vw
height:100px; //高度不用转对吧? px2vierport 好像也没转
font-size:px2vw(20); // 3.90625vw
} // 假设用户使用iphone se(375x667),浏览器显示的是 {
margin-left: 73.2421875px; // 375/ 100 * 19.53125
width:146.484375px; // 375/ 100 * 39.0625
height:100px;
font-size:14.6484375px // 375/ 100 * 3.90625
} 是这样理解吗? |
不对啊, window.screen.width 是一个运行时变量, 怎么可能在插件编译时使用呢 |
@vaynevayne 你说的函数 |
哦哦。那么这个插件的原理是什么啊,大哥@wswmsword |
就是编译的时候做 px 转换的,插件依赖 postcss,postcss 又会在打包工具 webpack 或者 vite 上用,用的时候都是根据文件类型来决定是不是做编译转换,所以基本上都是在独立的 css 文件用这个插件。如果你能用某个工具找到所有行内样式,那也能用这个插件,不然不好做。 |
我问的是他用不了运行时变量,那他的转换公式又是什么? |
@vaynevayne 不好意思,我重新看了 @LuoRiWuSheng 的公式,是有问题的,计算 vw 不需要运行时的 你说的设计图尺寸是 1920,字体 20px,那转换之后就是 px 转换成 vw 的公式(设计图宽度 375): export const px2vw = (px: number): string => `${(100 / 375) * px}vw`; |
嗯,谢谢, 我也搞懂了, css里的%单位是相对于父元素或其他规则 ,其实vw就是运行时会帮你把分母换成设备宽度的%单位, 这样的话理解vw就简单了: 在设计阶段, 我们要得到一个百分比值, 在渲染阶段使用这个百分比结合屏幕宽度,计算出最终的px单位 设计阶段:
在浏览器渲染时,比如在414px(window.screen.width)的屏幕上, 1vw就是 414/100 = 4.14 px, 绕这半天,其实就是
不过有个需要注意的点:
|
|
如果能增加排除目录就好了,有些UI库样式写在style上,也被转换了 |
把px大写就不会被转换了在 2024年4月2日,12:00,africa1207 ***@***.***> 写道:
如果是vite脚手架的react框架可以使用https://github.com/yozojo/inline-px-to-viewport,处理内联style的px,如果对你有帮助,可以给star吗
如果能增加排除目录就好了,有些UI库样式写在style上,也被转换了
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: ***@***.***>
|
我知道大写PX或者不写可以不转换,但是UI库不听我指挥。。我使用
|
发现一个问题。用 这个插件,无法自动转换,写在标签上的行内样式
The text was updated successfully, but these errors were encountered: