html怎么固定背景长宽,css – 如何在固定宽度元素上设置全屏宽度背景?

我们可以采取的一种解决方法是在父容器填充上使用视口宽度,强制子项进入宽度仅为500px的盒子(根据您的codepen).

这样做时要记住的重要一点是盒子尺寸:边框;将需要在容器上设置,否则填充会弹道.

我们通过使用calc,vw和padding来做到这一点.

padding: 20px calc(50vw - /*half of container width*/);

这是链接的codepen上容器的完整扩展代码:

.container {

display: flex;

flex-flow: row nowrap;

justify-content: center;

margin-left: auto;

margin-right: auto;

height: 300px;

width: 100%;

padding: 20px calc(50vw - 250px);

background-color: #acffac;

background-size: 100vw auto;

background-position: center top;

box-sizing: border-box;

}

html {

overflow-y:scroll; /* fixes potential calculation errors caused by scroll bar - thanks to Roberts comment */

}

.container {

display: flex;

flex-flow: row nowrap;

justify-content: center;

margin-left: auto;

margin-right: auto;

height: 300px;

width: 100%;

padding: 20px calc(50vw - 250px);

background-color: #acffac;

background-size: 100vw auto;

background-position: center top;

box-sizing: border-box;

}

.child {

flex: 1 0 auto;

width: 100px;

height: 100%;

background-color: #ff4444;

}

.child+.child {

margin-left: 20px;

}

我最后指出,如果其他人有更好的解决方案,你可能想暂时关注一下,因为在旧版本的Chrome and Safari上使用vw里面的一些问题.

编辑:

正如瓦迪姆和罗伯特的评论所指出的,有一些事情可能会导致一些障碍.

首先,假设你正在使用一个最小的模板(即没有normalize / reset.css),你的身体很可能仍然会有固有的边缘,这会使这种布局变得混乱.你可以解决这个问题:

body {

margin:0;

}

其次,根据你的操作系统(是的,我正在看你的微软!)你的滚动条可以将你的内容推到一边,同时仍然包括在大众的计算中.

我们可以解决这两种方式之一.第一个是对填充计算进行调整以包括滚动条侧,但您必须编写脚本以确保滚动条实际存在,并且滚动条的大小不同(I.E – > 17px,Edge – > 12px).

另一种选择是使用自定义内容滚动条,它会完全溢出:隐藏;在内容上,从而删除滚动条,然后实现它自己的滚动条版本(通常位于内容的顶部,位置:fixed;)它.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值