html内容溢出,overflow:auto导致出现滑动条 或者 overflow:hidden导致丢失元素边缘内容解决方法(附带分享自用重置浏览器样式代码)

问题

如标题所说,在子元素内容的宽度并没有超过屏幕大小的情况下,设置了width:100%后,再设置 overflow:auto会出现无意义的左右滚动条(如下图)。
在这里插入图片描述
又或者设置了overflow:hdden,会出现右边内容显示不全,但左边外边框显示正常的情况。

原因

由于我没有系统的学习过css,参考了其他人的less样式设置,而有些样式我与其他人的不同,导致了此结果。再仔细对比调试过样式后,我找到了导致该问题的重要属性: box-sizing

这里引用菜鸟教程里的描述:

box-sizing 属性定义如何计算一个元素的总宽度和总高度,主要设置是否需要加上内边距(padding)和边框等。
例如,假如您需要并排放置两个带边框的框,可通过将 box-sizing 设置为
“border-box”。这样就可以让浏览器呈现出带有指定宽度和高度的框,并把边框和内边距放入框中。

默认情况下,元素的宽度(width) 和高度(height)计算方式如下:

width(宽度) + padding(内边距) + border(边框) = 元素实际宽度
height(高度) + padding(内边距) + border(边框) = 元素实际高度

  • content-box
    默认值。如果你设置一个元素的宽为 100px,那么这个元素的内容区会有 100px 宽,并且任何边框和内边距的宽度都会被增加到最后绘制出来的元素宽度中。
  • border-box
    告诉浏览器:你想要设置的边框和内边距的值是包含在 width 内的。也就是说,如果你将一个元素的 width 设为 100px,那么这 100px 会包含它的 border 和 padding,内容区的实际宽度是 width 减 去(border + padding) 的值。大多数情况下,这使得我们更容易地设定一个元素的宽高。
    注:border-box 不包含 margin。
  • inherit
    指定 box-sizing 属性的值,应该从父元素继承

正好在我参考的代码中,使用了 box-sizing: border-box,即元素实际宽度==width,内边距包含在width里面。

自用重置浏览器样式代码

将下面代码内容复制进全局less并引用即可
reset.less

* {
  box-sizing: border-box;
}

html {
  height: 100%;
  font-size: 14px;
}

body {
  margin: 0;
}

ul,
h1,
h3,
h4,
p,
dl,
dd {
  padding: 0;
  margin: 0;
}

a {
  text-decoration: none;
  outline: none;
}

i {
  font-style: normal;
}


img {
  max-width: 100%;
  max-height: 100%;
  vertical-align: middle;
  object-fit: cover;
}

ul {
  list-style: none;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值