8090要玩网 手游攻略 新游动态 背景色全屏保持一致,你能想到哪几个?

背景色全屏保持一致,你能想到哪几个?

时间:2024-02-10 20:01:28 来源:网络整理 浏览:0

常规开发者经常会遇到上述界面,我们希望其背景颜色在整个屏幕上保持一致。

当然,从界面角度来看,这样的渲染只是因为父容器没有填满屏幕,在底部留下了空白区域。

现在想一想。 你能想到哪些?

记不住也没关系,花2分钟简单回顾一下即可。

定位方式

看到字幕你应该知道我要说什么吧?

<body>
    
.container{ position:absolute; bottom:0; top:0; left:0; right:0; }

现在我不再需要考虑 html 或 body 高度。 它看起来不错,让我微笑。

JS动态获取方法

一切皆有可能,也能解决这个问题

<script type="text/javascript">
 let screenH=document &&document.documentElement &&document.documentElement.clientHeight || window.innerHeight;
 document.querySelector('body').style.height=screenHeight+"px";
</script>

100%全屏方式

我发现很多前端朋友在使用这种方法的时候经常会出现这样的情况。

body{
    height:100%;
}

结果还是0,然后我就陷入了无尽的疑问……

因为 CSS 中的某些属性是从父级继承的,所以这就是其中之一。 当前html标签是0,所以%自然也是0。

html,body{
    height:100%;
}

因此,在设置时不要忘记带上“我”。 说到继承 CSS 属性,这里有一个扩展评论:

填充法

html,body{
    height:-webkit-fill-available;
    height:fill-available;
}

看到这里,有的同学可能会好奇fill-和**100%**设置有什么区别?

这是一个演示:

html,body{
    height:100%,
    padding:20px;
}
body{
    height:-webkit-fill-available;
    height:fill-available;
    padding:20px;
}

设置 100% 也会破坏外部容器,而 fill- 不会破坏外部容器并保持我们预期的高度。

fill-是剩余可用空间的智能计算。 如果没有其他属性的干扰,相当于100%。 但如果有属性干扰,则会智能计算。宽度和宽度均适用

说了这么多,我们来扩展一个问题

vh定义方法

vh:css3新单位,view的缩写,指可视窗口的高度,1vh = 视图窗口高度的1%;

现在我们已经讨论了 CSS 单位,我想请您再思考一下这个问题:

vh 单位定义为窗口高度的百分比。 这不是很容易吗?

body{
    height:100vh;
}

完成了,你完成了!

下面是对vh在移动设备上的一些“功能”的扩展理解。

当我们仍然将body设置为100vh时,分别打开微信内置浏览器、浏览器、浏览器。

从效果图中不难看出,100vh在浏览器和浏览器中的解决方案并不完美。 滚动条出现在两个浏览器中,并且无法达到我们预期的视觉区域的全屏高度。

作为简历达人,借助搜索引擎,我们了解到100vh中包含了网址栏和工具栏。 它是第一批更新其实现的移动浏览器之一,它选择根据屏幕的最大高度定义 vh 的固定值。 ,然后浏览器也会效仿。 这就产生了我们此时看到的效果图。

为什么会这样呢? 一位苹果官方开发人员回应说:“这不是一个错误,而是一个。”

事实证明,这是一件独一无二的艺术品。 滚动时可见区域会动态变化,如果我们相应地更新CSS视口高度,则需要在滚动时更新布局。 为了获得更好的用户体验,使用更大的视图尺寸是最好的折衷方案。

通过 CSS 变量设置

它是通用的,我们可以通过JS获取CSS变量中存储的处理并应用。

 body{
     height:100vh;
     height:calc(var(--vh,1vh)*100);
 }

提供备份属性,这样就OK了,接下来我们设置自定义变量

//获取视口高度 *0.01获取vh单位值
let vh=(document &&document.documentElement &&document.documentElement.clientHeight) || window.innerHeight)*0.01;
 //document中设置自定义CSS属性变量
document.documentElement.style.setProperty('--vh', `${vh}px`);

这样,在:root中就成功创建了--vh的css变量。

为了防止使用旋转屏幕功能,我们需要监听窗口调整大小事件来更新我们创建的--vh值

window.addEventListener("resize",()=>{
    let vh=(document &&document.documentElement &&document.documentElement.clientHeight) || window.innerHeight)*0.01;
    document.documentElement.style.setProperty('--vh', `${vh}px`);
})

显然,这个成本还是有点高。 一旦更新了--vh的值,我们的界面就会重新绘制辐射4设置全屏模式,体验非常不好。 我们应该尽量避免这样麻烦的操作。

参考:

标题:背景色全屏保持一致,你能想到哪几个?
链接:https://www.yaowan8090.com/news/xydt/3644.html
版权:文章转载自网络,如有侵权,请联系删除!
资讯推荐
更多
阴阳师4月22日更新内容:帝释天上线技能调整,红莲华冕活动来袭

阴阳师4月22日更新内容:帝释天上线技能调整,红莲华冕活动来袭[多图],阴阳师4月22日更新的内容有哪些?版本更新

2024-02-10
四川电视台经济频道如何培养孩子的学习习惯与方法直播在哪看?直播视频回放地址

四川电视台经济频道如何培养孩子的学习习惯与方法直播在哪看?直播视频回放地址[多图],2021四川电视台经济频

2024-02-10
湖北电视台生活频道如何培养孩子的学习兴趣直播回放在哪看?直播视频回放地址入口

湖北电视台生活频道如何培养孩子的学习兴趣直播回放在哪看?直播视频回放地址入口[多图],湖北电视台生活频道

2024-02-10
小森生活金币不够用怎么办?金币没了不够用解决方法

小森生活金币不够用怎么办?金币没了不够用解决方法[多图],小森生活金币突然就不够用的情况很多人都有,金币没

2024-02-10