首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

SASS使用屏幕高度计算设置高度差后的剩余vh

SASS(Syntactically Awesome StyleSheets)是一种CSS预处理器,它允许开发者使用变量、嵌套规则、混合(mixins)、继承等高级功能来编写更加简洁和可维护的CSS代码。在SASS中,你可以使用屏幕高度计算设置高度差后的剩余vh(viewport height)值,这在响应式设计中非常有用。

基础概念

  • Viewport Height (vh): 这是一个相对于视口高度的单位,其中1vh等于视口高度的1%。
  • SASS: 是一种CSS预处理器,它扩展了CSS的功能,使得编写复杂的样式表变得更加容易。

应用场景

在响应式设计中,经常需要根据屏幕大小动态调整元素的高度。例如,你可能有一个固定的头部和底部,需要计算中间内容区域的高度,以确保它填满剩余的视口高度。

如何计算剩余vh

假设你有一个固定的头部和底部,每个都是50px高,你想要设置中间内容区域的高度为剩余的视口高度。你可以使用SASS来计算这个值。

示例代码

代码语言:txt
复制
// 定义头部和底部的高度
$header-height: 50px;
$footer-height: 50px;

// 计算剩余的vh
$remaining-vh: 100vh - ($header-height + $footer-height);

// 应用计算后的高度到内容区域
.content {
  height: #{$remaining-vh};
}

编译后的CSS

编译上述SASS代码后,你将得到以下CSS:

代码语言:txt
复制
.content {
  height: calc(100vh - 100px);
}

解释

在这个例子中,我们首先定义了头部和底部的高度变量。然后,我们使用这些变量来计算剩余的视口高度。最后,我们将计算出的高度应用到内容区域。

注意事项

  • 使用calc()函数可以在CSS中直接进行计算,这在不支持SASS的环境中也能正常工作。
  • 确保在不同的设备和浏览器上测试你的设计,以确保计算的准确性。

通过这种方式,你可以确保你的网站或应用在不同的屏幕尺寸下都能保持良好的布局和用户体验。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

网站自适应布局为什么我要抛弃rem,改用vw?

我们可以这样理解 100vw = window.innerwidth, 100vh = window.innerheight  在移动端我们一般都可以认为,100vw就是屏幕宽度。...若使用vw布局,就不需要再像rem那样,在js中去动态设置根元素的font-size了,sass中只需要使用这个函数做转换即可 //以iphone7尺寸@2x 750像素宽的视觉稿为例 @function...百分比%是根据父元素宽度或者高度进行计算,而vw vh固定按照viewport来计算,不会受父元素宽高度影响。...但把body或者html设置为width:100%时,是不包括页面滚动条的宽度的。也就是说100vw在有纵向滚动条的情况下,会比100%宽。...如果你的页面只适用于微信、qq,那绝对能放心使用vw单位,还可以配合vh针对一些特殊比例屏幕做处理,彻底摆脱使用rem带来的副作用,删掉html头部计算font-size的那段js代码,让你的代码更纯粹

3.5K10

css精髓:这些布局你都学废了吗?

1 2列布局 2列布局的使用频率也非常高,其实现效果主要就是将页面分割成左右宽度不等的两列。一般宽度较小的一列会设置为固定宽度,作为侧边栏之类的,而另一列则充满剩余宽度,作为内容区。...实现思路很简单,侧边栏宽度固定,设置绝对定位,使其脱离文档流,内容区域通过calc()函数计算剩余宽度并设置宽度,再加一个margin-left,值为侧边栏的宽度。...flex,侧边栏宽度固定,内容区域设置flex:1即可充满剩余区域。...为内容区域添加最小的高度 这种方法重要用vh(viewpoint height)来计算整体视窗的高度(1vh等于视窗高度的1%),然后减去底部footer的高度,从而求得内容区域的最小高度。...每一个页面都要重新计算一次,这是很麻烦的,所以这种方法虽然简单但却是不推荐的。 使用flex布局 这种方法就是利用flex布局对视窗高度进行分割。

1K30
  • CSS之1px问题

    设备像素 (物理像素):指设备能控制显示的最小物理单位,意指显示器上一个个的点。从屏幕在工厂生产出的那天起,它上面设备像素点就固定不变了,和屏幕尺寸大小有关。...设备独立像素 (逻辑像素):可以认为是计算机坐标系统中得一个点,这个点代表一个可以由程序使用的虚拟像素(比如: CSS 像素),这个点是没有固定大小的,越小越清晰,然后由相关系统转换为物理像素。...)不支持百分比值 vw/wh 1vw就等于屏幕宽度的1%, 1vh就等于屏幕高度的1% rem/em rem作用于非根元素时,相对于根元素大小;rem作用于根元素字体大小时,相对于其初始字体大小,本质就是等比缩放...如果改元素没有设置,则一直向父级元素查找,直到找到,如果没有设置大小,使用浏览器默认大小。...缺点: rem需要借助js进行动态修改根元素大小,实现计算rem时,需要借助sass或者less等预处理的函数,不能100%等比例缩放 em 改变父元素的字体大小,所有子元素都回流 大厂成熟解决方案 淘宝移动端自适应方案

    6010

    给萌新HTML5 入门指南

    HTML5页面布局 常用的页面布局方式有很多种,比如 最早的静态表格布局 通过栅栏划分页面的流式布局 根据屏幕大小自动调整内容的自适应布局 融和流式布局和自适应布局的响应式布局 以上布局主要通过使用css...CALC计算,浏览器高度变化时自动调整。...这样的布局方式存在一些问题,就是当header、footer高度发生变化后,需要重新设置container高度,另外如果container中并列元素较多时,浮动难以控制。...body设置高度 100vh, 这里使用了CSS3 的新单位vh,即 view height 视窗高度,100vh相当于html, body 高度100%,同样还有vw代表视窗宽度 body设置flex...布局,方向从上到下叠放 designerContainer 设置flex 1,自动充满header和footer之外剩余空间 container内部依旧flex布局,designerMain 设置 flex

    1.3K41

    CSS Viewport 单位,很多人还不知道使用它来快速布局!

    假设我们有一个元素与以下CSS: .element { width: 50vw; } 当视口宽度为500px时,50vw计算如下 width = 500*50% = 250px 视口高度 vh单位表示根元素高度的百分比...我们有一个元素与以下CSS: .element { height: 50vh; } 当视口高度为290px时,70vh计算如下: height = 290*70% = 202px 大家都说简历没项目写...Vmin 单位 vmin表示视口的宽度和高度中的较小值,也就是vw 和 vh 中的较小值。如果视口宽度大于其高度,则将根据高度计算该值。 我们以下面的例子为例。 ?...在我的职业生涯中,我没有使用固定高度的页脚,因为在例如不同的屏幕尺寸下,此footer是不可行的。...2.第二种解决方案:Flexbox和视口单位(推荐) 通过将100vh设置为body元素的高度,然后可以使用flexbox来使main元素占用剩余空间。

    3.3K30

    大屏开发你需要知道哪些

    vw 100vw 等于当前窗口屏幕得宽度;vh 100vh 等于当前窗口屏幕得高度;rem 主要根据根元素body得font-size:12px, 1rem 等于12px, 然后跟用窗口得大小赋值给body...真适配又分为 高度适配、宽度适配。 宽度适配就是根据用户得屏幕窗口宽度发生变化做到一个界面适配,比如全部都使用vw。...高度适配是根据用户屏幕窗口发生变化达到一个界面适配,比如使用vh;其实个人认为没必要做高度适配、都根据宽度vw达到一个界面适配就好了,主要是因为做高度适配得话使用vh,再小点得屏幕上 很容易就发生文本重叠...大屏界面布局 其实一般大屏布局会又一个header(主标题、时间展示)、side (副标题:屏幕的两侧可能会分为4块4个维度去展示当前屏的一些信息)、main(大屏主视图)、footer(底部)。...咱们再搭建容器使用的都是定位那么一定要分清定位权重。

    88910

    单屏页面响应式适配玩法

    标签页高度 + 地址栏高度 + 书签栏高度 3、总结上面两点 以上两点的高度计算通过截图获得,可能会有些许误差。...300 ÷ (720 ÷ 100) ≈ 41.666 比如设计稿为 1920x1080(单屏设计高度应该更小一点,如适配第一节所说),可以写个 CSS 预处理函数,这样方便直接使用设计稿的尺寸,以 Sass...写完后在上面列举的主流分辨率下一一测试通过。...8.1、尝试 rem + vh 方案 一开始想的是 rem + vh 结合使用,根元素 html 使用 vh,其他单位则使用 rem,然后找到有问题的宽高比,通过 @media 方式设置 html 为...8.2、落地方案,vh + vw + JavaScript 计算 而直接在元素的属性值上设置为 vh 或 vw,所有的值都会实时变动,没有最小值(除了属性为字体有最小值),这样就最大程度减少 UI 变乱的情况了

    2K20

    CSS | 视差滚动 | 笔记

    perspective() 函数用于定义 计算机屏幕平面 与 应用 translateZ 属性的 HTMLElement 之间的虚拟距离。...视口/视窗 (屏幕可见部分(去除书签栏等, 真正用于渲染页面部分), 非整个浏览器窗口) height:100% 铺满父容器的高度 height:100vh 铺满屏幕(viewport)的高度 "100vh...vh 优势在于能够直接获取高度, 而用 % 在没有设置 body 高度的情况下, 是无法正确获得可视区域的高度的。 100vh 在不同的浏览器的实现方式上也有一点微妙的变化, 这使得它几乎毫无用处。...这些浏览器没有将 100vh 的高度调整为视口高度变化时屏幕的可见部分,而是将 100vh 设置为隐藏地址栏的浏览器高度。...结果是,当地址栏可见时,屏幕的底部部分将被切断,从而破坏了100vh的初衷。 如下所示: 当地址栏可见时,由于移动浏览器不正确地将100vh设置为屏幕高度而没有显示地址栏, 因此屏幕底部被切断。

    82021

    px转vw和vh的工具(对前端同学有用)

    换句话说, 不管是1136x750px的屏幕还是960*640px或着其他的尺寸的屏幕,它们的宽度都是100vw,高度都是100vh。...1136x750的屏幕里, 1vw = 11.36px,1vh =7.5px;960*640px的屏幕里, 1vw = 9.6px,1vh = 6.4px。 这跟百分比是一样的。...设置自适应尺寸提供了很大的便利,要为html文档树某处枝叶的一个元素设置相对于屏幕的百分比,在以前, 只能用JavaScript动态计算,现在使用vw和vh两个单位就可以解决问题。...我们可以使用以下公式 宽度(vw) = 100 / 1920 * 100; 高度(vh) = 100 / 1080 * 40; 但是每次都机械样式手动算,太浪费事件了, 于是我制作了一个简单的换算工具...这是工具的界面 首选项里面填好psd设计搞的尺寸, 然后要计算psd中的页面元素的vw和vh的值, 只需要在工具宽高输入框中填入相应的px值, vw和vh值就自动能计算出来了, 减少了无谓手动计算的工作量

    4.9K80

    移动端布局方案

    设置盒模型的不同属性时,其百分比设置的参考元素不唯一,容易使布局问题变得复杂 开发过程中计算量大,且参照系容易选错,当屏幕跨度超过设计稿太多时,显示相较于原来设计稿会出现比较大的变形,并且如果不注意垂直方向的适配计算的话...因为市面上的手机宽度比并不是一定的,千万别按照宽度来计算高度的百分比,而是应该按照高度来计算,其他参照参考以上表格 1.2 弹性布局 弹性盒布局是 CSS3 中的一种新布局模式,可以轻松地创建响应式网站布局...根据 屏幕宽度 设置 html 标签的 font-size,在布局时使用 rem 单位布局,达到自适应的目的,是 弹性布局 的一种实现方式。...小数像素问题,浏览器渲染最小的单位是像素,元素根据屏幕宽度自适应,通过 rem 计算后可能会出现小数像素,浏览器会对这部分小数四舍五入,按照整数渲染。...px 转换成 vw 不一定能完全整除,因此有一定的像素差 vh/vw 布局计算 100vw = 750px(设计图的像素) 0.13333333333333333333vw = 1px /* 设计图中一个

    13310

    弹指间,重温几个设置满屏的小技巧

    100%的同时设置了padding撑破了外层容器,而fill-available没有,保持我们预想的高度。...不妨了解一下 vh定义法 vh:css3新单位,view height的简写,是指可视窗口的高度,1vh=视窗高度的1%; 既然讲到CSS单位了,麻烦各位再脑补下这个问题: CSS单位都有哪些?...作为一个cv高手,借助搜索引擎我们了解到,Safari把网址栏与工具栏算进了100vh中,是第一个通过选择根据屏幕的最大高度为vh定义固定值来更新其实现的移动浏览器之一,而后Google浏览器也效仿它。...滚动时可见区域会动态变化,如果我们相应地更新CSS视口高度,则需要在滚动过程中更新布局。为了达到更好的用户体验,使用较大的视图尺寸是最好的折衷方案。..., `${vh}px`); 这样就成功在:root中创建了--vh的css变量 为了防止旋转屏幕功能的使用,我们需要监听窗口调整大小事件来更新我们创建的--vh值 window.addEventListener

    1.2K20

    在移动端避免使用100vh「建议收藏」

    如果你想将一个元素设置成全屏高度,你可以设置高度:100vh,这样你就有了一个完美的全屏元素,它会随着视口的改变而改变大小!遗憾的是,事实并非如此。...100vh在不同的浏览器的实现方式上也有一点微妙的变化,这使得它几乎毫无用处。最好避免100vh,而是依赖javascript来设置高度,以获得完整的视口体验。...这些浏览器没有将100vh的高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为隐藏地址栏的浏览器高度。结果是,当地址栏可见时,屏幕的底部部分将被切断,从而破坏了100vh的初衷。...如下所示: 当地址栏可见时,由于移动浏览器不正确地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应该在屏幕底部的按钮被隐藏了。...当页面加载时,将高度设置为window.innerHeight将正确地将高度设置为窗口的可见部分。如果地址栏是可见的,那么window.innerHeight是全屏的高度。

    2.7K21

    移动端避免使用100vh

    如果要设置元素的样式以占据整个屏幕的高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可悲的是,事实并非如此。...这些浏览器没有将100vh高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为浏览器的高度,并隐藏了地址栏。结果是,当地址栏可见时,屏幕的底部将被切除。...如下所示: 当显示地址栏时,由于移动浏览器错误地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应隐藏在屏幕底部的按钮。...无论地址栏是否可见,屏幕都将是视口的高度。此外,通过在页面首次加载时将高度锁定在适当的位置,可以防止地址栏隐藏在使用该网站的过程中,从而带来尴尬的屏幕调整大小体验。...遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备上的局限性,最好避免使用它。

    2K20

    避免在移动端页面中使用100vh

    如果要设置一个元素的样式使它占据整个屏幕的高度,那么你可以设置height: 100vh,这样你就拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可惜的是,事实并非如此。...100vh在移动浏览器中以一种微妙但基本的方式被破坏,使其几乎无用。最好避免使用100vh,而应该通过javascript设置高度的方式来获得完整的视口体验。...当视口高度变化时,这些浏览器没有将100vh的高度调整为屏幕的可见部分的高度,而是将100vh设置为隐藏了地址栏的浏览器的高度(其实就是100vh高度没变,但是地址栏那块把内容顶出去了一块)。...无论地址栏是否可见,屏幕都将是视口的高度。此外,在页面首次加载时将高度固定为适当的大小,可以防止在使用该网站的过程中地址栏隐藏,从而带来尴尬的屏幕调整大小体验。...遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。100vh是如此接近伟大(greatness),但考虑到它在移动设备上的局限性,最好避免使用它。

    1.6K30

    前端架构师之路02_移动端布局方案

    设置盒模型的不同属性时,其百分比设置的参考元素不唯一,容易使布局问题变得复杂 开发过程中计算量大,且参照系容易选错,当屏幕跨度超过设计稿太多时,显示相较于原来设计稿会出现比较大的变形,并且如果不注意垂直方向的适配计算的话...因为市面上的手机宽度比并不是一定的,千万别按照宽度来计算高度的百分比,而是应该按照高度来计算,其他参照参考以上表格 1.2 弹性布局 弹性盒布局是 CSS3 中的一种新布局模式,可以轻松地创建响应式网站布局...小数像素问题,浏览器渲染最小的单位是像素,元素根据屏幕宽度自适应,通过 rem 计算后可能会出现小数像素,浏览器会对这部分小数四舍五入,按照整数渲染。...vw : 1vw 等于视口宽度的 1% vh : 1vh 等于视口高度的 1% vmin : 选取 vw 和 vh 中最小的那个 vmax : 选取 vw 和 vh 中最大的那个 计算方式实际上与百分基本一致...,因此有一定的像素差 vh/vw 布局计算 100vw = 750px(设计图的像素) 0.13333333333333333333vw = 1px /* 设计图中一个 48px*35px 大小的元素

    8010

    前端工程师之移动端布局方案

    设置盒模型的不同属性时,其百分比设置的参考元素不唯一,容易使布局问题变得复杂 开发过程中计算量大,且参照系容易选错,当屏幕跨度超过设计稿太多时,显示相较于原来设计稿会出现比较大的变形,并且如果不注意垂直方向的适配计算的话...因为市面上的手机宽度比并不是一定的,千万别按照宽度来计算高度的百分比,而是应该按照高度来计算,其他参照参考以上表格 1.2 弹性布局 弹性盒布局是 CSS3 中的一种新布局模式,可以轻松地创建响应式网站布局...根据 屏幕宽度 设置 html 标签的 font-size,在布局时使用 rem 单位布局,达到自适应的目的,是 弹性布局 的一种实现方式。...小数像素问题,浏览器渲染最小的单位是像素,元素根据屏幕宽度自适应,通过 rem 计算后可能会出现小数像素,浏览器会对这部分小数四舍五入,按照整数渲染。...px 转换成 vw 不一定能完全整除,因此有一定的像素差 vh/vw 布局计算 100vw = 750px(设计图的像素) 0.13333333333333333333vw = 1px /* 设计图中一个

    6610

    移动端避免使用100vh

    CSS中的视口单位听起来很棒。如果要设置元素的样式以占据整个屏幕的高度,则可以设置height: 100vh,您拥有一个完美的全屏元素,该元素会随着视口的变化而调整大小!可悲的是,事实并非如此。...这些浏览器没有将100vh高度调整为视口高度变化时屏幕的可见部分,而是将100vh设置为浏览器的高度,并隐藏了地址栏。结果是,当地址栏可见时,屏幕的底部将被切除。 如下所示: ?...当显示地址栏时,由于移动浏览器错误地将100vh设置为屏幕高度而没有显示地址栏,因此屏幕底部被切断。在上图中,应隐藏在屏幕底部的按钮。...无论地址栏是否可见,屏幕都将是视口的高度。此外,通过在页面首次加载时将高度锁定在适当的位置,可以防止地址栏隐藏在使用该网站的过程中,从而带来尴尬的屏幕调整大小体验。...遗憾的是,在不依赖JavaScript的情况下,仍然没有一种简单的方法来使元素占据整个视口高度。 height: 100vh 非常接近 ,但鉴于其在移动设备上的局限性,最好避免使用它。

    1.9K20

    GOFLY在线客服-使用vh、vw使div元素充满屏幕-GO语言实现开源独立部署客服系统

    当进行布局的时候,有时候需要div元素根据屏幕的宽度和高度进行自适应,而不是根据内容 除了使用js方法之外,还可以使用css3的新单位 vh wh 1vh=视窗高度的1%,height: 100vh...;就是屏幕高度的100% 1vw=视窗宽度的1%,width: 100vw;就是屏幕宽度的100% vw、vh 与 % 百分比的区别 (1)% 是相对于父元素的大小设定的比率,vw、vh 是视窗大小决定的...(2)vw、vh 优势在于能够直接获取高度,而用 % 在没有设置 body 高度的情况下,是无法正确获得可视区域的高度的。...margin: 0; } .content{ width: 100vw; height: 100vh...; background: #1c7430; } 1vh=视窗高度的1%,height: 100vh;就是屏幕高度的100%

    53320

    postcss-px-to-viewport之vw、vh、rem

    先知道一下viewport的四个单位,vw、vh、vmax、vmin: vw:1vw 等于视口宽度的1% vh:1vh 等于视口高度的1% vmin: 选取 vw 和 vh 中最小的那个 vmax:选取...取的是vw和vh最大最小计算。 先使用rem,之前用的是淘宝的flexible.js,会帮你动态的根据屏幕大小计算html的font-size。...我去看了之前的项目和淘宝,根据750的设计稿,使用flexible.js的在屏幕556px之后html的font-size最大是54px,移动端的时候540之后html的font-size最大也是54px...既然知道rem的原理,只需要动态设置html的font-size,计算也很简单,比如按照750设计稿,flexible的1rem是75px,如果配合vw,100vw是750px,那么1px就是0.1333333vw...也可以直接用蓝湖直接转换,或者设置成1rem为100px,那font-size就要设置成13.33333vw。 有点跑偏了,主要想分享postcss-px-to-viewport的使用。

    1.7K30

    响应式图像

    处理高度的时候,vh单位更好。 1. 占满宽度的元素: % > vw 正如我所提到的,vw单位根据视窗的宽度决定它的大小。然而,浏览器是根据浏览器的窗口计算视窗大小的,包括了滚动条的空间。...在这个例子中,我用红色边框包裹html元素,然后给section元素设置背景颜色。 ? 因为这个细微的差别,当使一个元素横跨整个页面的宽度时,最好使用百分比单位而不是视口的宽度。 2....占满高度的元素:vh > % 在另一方面,当使一个元素跨越整个页面的高度时,vh远比百分比单位好。...因为用百分比定义的元素的大小是由它的父元素决定的,只有父元素也填满整个屏幕的高度时我们才能拥有一个填满整个屏幕的高度的元素。...滚动条的问题也不是一个问题,因为现在大多数页面通常不会有水平滚动条。 vh应用 全屏背景图片 vh单位一个典型的用途是用来创建一个横跨整个屏幕高度和宽度的背景图片,不管设备的大小。

    2.5K10
    领券