jquery - jQuery:如果div高于90vh,则将位置从固定更改为相对
问题描述
我想#contact
在网站底部有一个固定的联系人字段 ( )。但是,如果文本区域 ( #text
) 高于90vh
,position: fixed
则应更改为position: relative
。
我就是这样开始的:
function contactPosition() {
$("#text").height(higherThan90vh);
$("#contact").css("position", "relative");
}
$(window).on("load resize", contactPosition).resize();
* {
margin: 0;
font-size: 30px;
}
#contact {
position: fixed;
bottom: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.</div>
<div id="contact">mail@mail.com</div>
我不知道如何继续,非常感谢您的帮助!:)
解决方案
根据vh的含义:
vh 视口高度的 1%。
您可以将文本高度转换为 vh 并与 90vh 进行比较:
// convert px to vh: height retuns a measure in px
function pxTOvh(value) {
var w = window,
d = document,
e = d.documentElement,
g = d.getElementsByTagName('body')[0],
x = w.innerWidth || e.clientWidth || g.clientWidth,
y = w.innerHeight || e.clientHeight || g.clientHeight;
var result = (100 * value) / y;
return result;
}
function contactPosition() {
if (pxTOvh($("#text").height()) >= 90)
$("#contact").css("position", "relative");
else
$("#contact").css("position", "fixed");
}
$(window).on("load resize", contactPosition).resize();
* {
margin: 0;
font-size: 30px;
}
#contact {
position: fixed;
bottom: 0;
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div id="text">Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy eirmod tempor invidunt ut labore
et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata
sanctus est Lorem ipsum dolor sit amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam voluptua. At vero eos et accusam et justo
duo dolores et ea rebum.
Stet clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit amet.
</div>
<div id="contact">mail@mail.com</div>
推荐阅读
- android - 如果连接了移动免提并且我说免提麦克风并在移动扬声器中流式传输,是否可以这样做?
- python - 如何在python中使用numpy来做流向栅格单元
- javafx - 当以编程方式更改 ComboBox 值属性时,如何防止触发 ActionEvent?
- apache-flink - 使用 FsStateBackend 在 Kubernetes 中进行 Flink 检查点失败
- node.js - 如何为桌面、Web 和移动应用程序(Electron.JS、Angular、NativeScript)创建可共享库
- tomcat - 如何在 Windows Server 2016 中使用 tomcat 配置 Stackify 前缀?
- python - Pygame矩形都聚在一起
- blazor - 在 Blazor 中显示可重用的 VueJS 图表组件
- python - 在散景图中选择和更新熊猫数据框列
- spring - ::TIMESTAMP::DATE 在 Java/Spring 中工作吗?