css单选radio按钮样式css多选框checkbox样式css响应式汉堡菜单(左滑、抽屉)css实现遮罩层弹出效果一组好看的css按钮效果(6种)css实现select下拉选择框css实现选项卡功能css实现下拉菜单css按钮样式代码(16种)css实现手风琴效果css图片轮播效果css进度条样式css实现侧边栏菜单css加载动画css背景动画效果css开关按钮样式(18种)css炫酷的圆形菜单css提示tooltip效果css手风琴_好看的Gallery伸缩效果css表格样式css分段控件导航栏css折角效果css粒子背景动画效果css进度圆圈连线css响应式分页样式代码css各种天气样式动画图标css层叠卡片滑出特效css下拉Dropdown菜单css圆圈按钮tip提示特效css和svg圆圈进度样式代码css动画404页面代码css爱心跳动动画代码css绘制逼真玻璃球效果css模拟开关灯特效创意css网格布局带动画效果css星级打分radio五角星css卡片悬浮翻转特效div上下浮动纯css动画css时间轴样式(timeLine)css文字循环翻滚动画效果css输入框动效css鼠标悬停缩放比例效果css模糊背景毛玻璃效果css实现小球循环跳动动画css实现标签样式Tagscss进度条阴影动画css绘制的小鸟css svg按钮冒泡动画特效css svg蓝色波浪动画特效css创意svg菜单栏水滴动画css文字进度条的实现CSS实现内容折叠/展开效果CSS3手机充电特效css实现鼠标点击拖拽效果CSS实现一个计时器纯CSS渐变绘制 Chrome 图标CSS 渐变来实现波浪动画纯CSS动态显示屏幕宽高

纯CSS动态显示屏幕宽高


然而现代 css 也可以获取到屏幕的宽高,通过自定义属性和一些数学函数来实现这一目标。


源码

<style>
:root {
--shadow-hue: 180deg;
--spring-duration: 1.33s;
--canvas: 220;
--bg: hsl(var(--canvas), 15%, 22%);
--wgt: 200;
}
@property --_w {
syntax: '<length>';
inherits: true;
initial-value: 100vw;
}
@property --_h {
syntax: '<length>';
inherits: true;
initial-value: 100vh;
}
:root {
--w: tan(atan2(var(--_w), 1px));
--h: tan(atan2(var(--_h), 1px));
}
.box:before {
content: counter(w) "x" counter(h);
counter-reset: h var(--h) w var(--w);
font-size: 50px;
font-family: system-ui, sans-serif;
font-weight: 900;
position: fixed;
inset: 0;
margin: auto;
}
.box {
padding: 50px 0;
width: 100%;
background: #f1f2f3;
text-align: center;
}
</style>
<div class="box"></div>


代码说明:

1、自定义属性的定义通常在:root选择器中进行,以便在整个文档中使用。

2、@property规则是CSS的一项新特性,允许开发者定义自定义属性的语法、继承性和初始值。通过@property,我们可以指定一个属性的类型和默认值。

syntax: '<length>' 指定了属性的类型为长度。
inherits: true 表示该属性可以继承。
initial-value 设置了属性的初始值,分别为 100vw 和 100vh,即视口的宽度和高度。

3、数学运算函数atan2(y, x) 函数返回从 x 轴到点 (x, y) 的角度(以弧度为单位); tan() 函数则计算给定角度的正切值。

4、计算屏幕宽高,在:root选择器中,我们使用tan()和atan2()函数来计算屏幕的宽度和高度,在这里我们将var(--_w)和1px作为参数传递,计算出宽度的角度。通过这种方式,我们可以将宽度和高度转换为无单位的整数值。

5、在.box:before伪元素中,我们使用 counter 来显示计算出的宽度和高度:

counter-reset 用于初始化计数器 h 和 w,并将其值设置为 var(--h) 和 var(--w)。
content: counter(w) "x" counter(h); 用于显示宽度和高度,格式为 宽度 x 高度。


链接: https://fly63.com/course/33_2071