具有 vw 和 vh 的响应式网站,当屏幕太小时,尺寸保持相同的尺寸 (px)

Posted

技术标签:

【中文标题】具有 vw 和 vh 的响应式网站,当屏幕太小时,尺寸保持相同的尺寸 (px)【英文标题】:responsive website with vw and vh, size staying the same size (px) when screen too small 【发布时间】:2017-05-11 19:01:08 【问题描述】:

我制作了一个完全使用 vh 和 vw 缩放的网站。现在,对于大屏幕,这使它具有足够的响应能力,但现在我想让它响应移动屏幕。在我的网站中,所有内容都在屏幕中间 60% 的范围内。有形状、图像和文本。如果屏幕太小,我将无法再阅读文本,但仍有 40% 的屏幕几乎是空白的(只有背景)。现在,当屏幕太窄时,我希望左右边距(屏幕的空白部分)变小,并且内容不会变小。您是否仍然可以使用 vw 和 vh 来执行此操作,还是必须以像素为单位更改所有内容?

我已经尝试过,例如当屏幕窄于 500 像素时将主体设置为 200vw,但没有运气。

谁能帮帮我?如果我必须以像素为单位重新制作,那真的很糟糕,因为我的元素的位置都很复杂。

谢谢!

【问题讨论】:

显示一些代码!学习创建minimal reproducible example 【参考方案1】:

我想到了三个解决方案:

    使用断点 使用最小宽度和宽度组合 流体布局

1.断点: 因此,如果文档宽度大于 768 像素(例如,最大移动分辨率),您希望将主容器元素的宽度设置为 60%。代码将是:

.container 
    margin: 0 auto; // horizontally centering element
    background-color: pink; // just to see where the element is


// targeting mobile screen size:
@media only screen 
and (max-width: 768px)
and (-webkit-min-device-pixel-ratio: 2) 
    width: calc(100% - 30px);


// targeting larger screens
@media only screen 
and (min-width: 769px)
and (-webkit-min-device-pixel-ratio: 2) 
    width: 60vw;

2。最小宽度: 可能是一个更简单的解决方案,但如果您还有其他元素的子元素样式使用视口单位,那么就不是那么好,您只需要确定看起来没问题的最小container 宽度并设置它是min-width 属性的值。

.container 
    margin: 0 auto; // horizontally centering element
    background-color: pink; // just to see where the element is
    width: 60vw;
    min-width: 320px;


也许第三个,最先进的技术可以帮助你,如果以上都不能,这是Fluid technique,在这个 Smashing 杂志的帖子中有详细解释,这实际上是排版案例中最有趣的,因为最布局的常用技术是我首先解释的。

希望我能提供帮助。

【讨论】:

以上是关于具有 vw 和 vh 的响应式网站,当屏幕太小时,尺寸保持相同的尺寸 (px)的主要内容,如果未能解决你的问题,请参考以下文章

vh搭配vw进行响应式布局

响应式布局的常用解决方案对比(媒体查询百分比rem和vw/vh)

视口初始缩放不等于 1 时的 Vh 和 vw

前端基础面试之CSS响应式rem/vw/vh

前端基础面试之CSS响应式rem/vw/vh

网页中如何做到缩放后屏幕后内容不受变化