CSS 100%宽度但避免滚动条。

6 浏览
0 Comments

CSS 100%宽度但避免滚动条。

这可能是已经解决了数十次的变体,但是CSS真的让我感觉像个傻瓜。\n我正在尝试构建一个可以以各种方式定位和调整大小的小部件。它的布局非常简单——固定高度的页眉、固定高度的页脚,以及占据剩余空间的正文内容。整体的宽度和高度是可变的。正文内容需要滚动。容器、页眉、页脚和正文的大小都已经调整好了。\n但是我想要的是,当正文需要滚动时,它能够滚动,而不会导致内容向左缩小以适应滚动条的出现。也就是说,我希望正文的宽度是它可能的最大宽度,减去滚动条的宽度,这样当它确实需要滚动时,就不会发生收缩。实际上,我想要的效果是:\n| - - - 未知宽度 - - -|\n+--------------------------+\n| 内容 |*|\n| 可能需要滚动 |*|\n| |*|\n+--------------------------+\n\n我希望可能需要滚动的内容的宽度是它可能的最大宽度减去潜在的滚动条宽度(|*| 区域)。\n我现在的情况大致是这样的:\n


\n我尝试过使用边距、填充,甚至是内部最内层div的百分比宽度,但都无法实现这种效果。我还需要在FF3、IE7/8和(幻想中的?)IE6中实现这个效果。

0
0 Comments

CSS 100%宽度但避免滚动条出现的原因是我们希望网页的内容在100%宽度下显示,但又不想一直显示滚动条。解决方法是创建一个容器来容纳网页的所有内容,并始终显示滚动条,然后隐藏它。

为了实现这个效果,我们可以给容器的子元素设置负边距和正内边距。负边距的偏移量可以超过滚动条的宽度,所以将其设置为100px就足够了。几乎无法想象有任何浏览器或网站的滚动条会比20px宽,更不用说100px了。

需要注意的是,将这些样式应用于body的每个直接子元素,而不是一个单独的#container元素,是因为否则position: sticky属性将无法正常工作。要使这个特性在一个元素上工作,它只能有一个具有滚动功能的祖先元素。

此外,作者在代码片段中替换复选框是因为他希望重新创建几乎所有的UI元素,以提供更好的动画效果和更可靠的实现。这样做可以避免使用浏览器的默认样式,从头开始创建自己的样式。

以上就是解决CSS 100%宽度但避免滚动条出现问题的原因和解决方法。

0
0 Comments

CSS 100%宽度但避免出现滚动条

当使用CSS设置一个元素的宽度为100%时,如果页面出现滚动条,会导致滚动条的宽度占据了一部分可用宽度,从而使元素的宽度超过了可用宽度,出现了滚动条。为了解决这个问题,可以使用vw单位来表示视口宽度,因为vw单位是包括滚动条宽度在内的,而百分比单位是不包括滚动条宽度的。因此,可以使用calc(100vw - 100%)来表示滚动条的宽度。

如果我们有一个占据可用宽度100%的顶级元素,我们可以利用这一点来控制滚动条出现时大小的变化。例如,我们希望布局如下:

.app {
  display: grid;
  grid-template-columns: 1fr 50vh 1fr;
}

其中,中间列的宽度是视口高度的50%,左右两列平分剩下的宽度。如果我们直接使用上述代码,当出现滚动条时,滚动条的宽度会从左右两列平均减去,这可能会导致界面的不美观。为了解决这个问题,我们可以使用计算得到的滚动条宽度只缩小右侧列的宽度:

.app {
  display: grid;
  grid-template-columns: calc((100vw - 50vh)/2) 50vh calc(100% - (50vh + 100vw)/2);
}

这样,当出现滚动条时,右侧列会收缩,左侧列和中间列的宽度保持不变。不过,这种方法无法使用fr单位,而且需要手动指定列的宽度。对于左侧列来说,宽度是视口宽度的一半减去中间列占据的50vh的宽度。右侧列的宽度则是从剩余的可用宽度(100%而不是100vw)中减去左侧列和中间列的宽度之和。这在下面的公式中更清楚:

calc(100% - ((100vw - 50vh)/2) - (50vh))

这将得到上述的计算结果。

以上就是解决CSS 100%宽度但避免出现滚动条的原因和解决方法。

0
0 Comments

问题的原因是使用了CSS属性width: 100%;导致元素的宽度超出了父容器的宽度,从而出现了水平滚动条。解决方法是使用overflow: scroll;属性来强制显示滚动条,但是这样会导致元素的宽度没有自适应父容器的效果。

0