我在我的网站上有一个div,我想保持视口的高度,直到div变得足够小到子元素开始碰撞的地方(或者稍早一点)。我试过min-height
和display:table;
,但都不起作用。下面是它的外观:
但是,在垂直方向较小的屏幕上,它看起来像这样:
随附的代码片段:
* {
margin: 0;
}
body {
overflow-x: hidden;
font-size: large;
margin: 0;
}
.welcome {
text-align: center;
background-image: url("https://images.unsplash.com/photo-1587831990711-23ca6441447b?ixlib=rb-4.0.3&ixid=MnwxMjA3fDB8MHxzZWFyY2h8Mnx8ZGVza3RvcCUyMGNvbXB1dGVyfGVufDB8fDB8fA%3D%3D&auto=format&fit=crop&w=500&q=60");
background-size: cover;
background-repeat: no-repeat;
min-height: 100%;
color: white;
position: absolute;
top: 0px;
width: 100%;
padding: 0 auto;
}
.welcome * {
clear: both;
}
.welcome-txt {
position: absolute;
top: 40%;
left: 50%;
-ms-transform: translate(-50%, -50%);
transform: translate(-50%, -50%);
white-space: nowrap;
}
.welcome-content {
animation-name: fadeInLoad;
animation-duration: 3s;
animation-timing-function: linear;
}
#child {
position: absolute;
top: 0;
color: black;
display: inline-block;
}
.info-content {
position: relative;
top: 83vh;
text-align: center;
background-image: url("img_5.jpg");
background-repeat: no-repeat;
background-size: cover;
width: 100%;
min-height: 105%;
padding: 20px;
padding-right: 20px;
clear: both;
overflow: hidden;
}
.info-content-blocks {
background-color: rgba(204, 204, 204, 0.8);
padding: 30px;
margin: 15px;
}
.diveder {
width: 100%;
min-height: 100px;
background-color: rgba(204, 204, 204, 0.8);
padding-top: 2%;
padding-bottom: 1%;
}
<div class="welcome">
<div class="welcome-content">
<h1 class="welcome-txt">Classes<br>
The Coders Club</h1>
<img src="/resources/Copy of The Coders Club.png" class="logo">
<p class="tagline">Learn. Code. Create.</p>
<div class="arrow-background">
<div class="arrow bounce"></div>
</div>
</div>
</div>
<div class="space"></div>
<div class="info-content">
<div class="diveder" style="color: red;"><h2>Class Starts February 10</h2>
<p>Signup by January 20th</p></div>
<div class="info-content-blocks" id="classes">
<h3>What Will Be Taught?</h3>
<h4><b>Beginner Class</b></h4>
<p>In the beginner class students will be taught the basics of HTML (Hyper Text Markup Language), CSS (Cascading Style Sheets). Students will be able to make websites like the one you are one now.</p>
<button class="standard-button"><a href="/curriculem-beginer.html">View curriculum</a></button><br><br>
<button class="standard-button">Enroll</button>
<h4>Intermediate Class Part 1 (New!)</h4>
<p>In the Intermediate part 1 class students will learn the basics of JS. IE: variables, function, if/else statements, object, object oriented programing. Note: The HTML and CSS is not required for the intermediate class.</p>
<button class="standard-button">Enroll</button><br><br>
<button class="standard-button"><a href="/curriculem-beginer.html">View curriculum</a></button><br><br>
</div>
4条答案
按热度按时间4dbbbstv1#
如果我没理解错的话,这可能就是你想要做的,首先将
min-height: 100vh
添加到.welcome
,然后我们可以使用flexbox模型到其父.welcome
,而不是在文本上使用绝对定位。这里的关键是实际上不使用绝对位置,而是使用弹性盒模型,这样它就被视为有自己的高度。
nfs0ujit2#
我遇到了一篇有用的文章here,它使用JS在
<meta name='viewport' />
上创建一个最小宽度,如果设备小于该最小宽度,它会呈现一个更“缩小”的页面版本。我相信这个解决方案可以解决元素碰撞的问题。
带有代码的github repo
a5g8bdjr3#
只需将父节点的
min-height
设置为fit-content
,然后根据需要将overflow
设置为scroll
或hidden
。jk9hmnmh4#
我正在使用一些js为这个
你可以从.welcome中删除最小高度,因为我们正在使用js即使是一个小的垂直屏幕,它也能完美地工作这里是完整的代码