gpt4 book ai didi

html - 缩小浏览器时,响应式页脚显示在部分内容上

转载 作者:行者123 更新时间:2023-12-02 03:36:18 26 4
gpt4 key购买 nike

我对 CSS 和 HTML 还很陌生。

据我所知,这个问题已被问过多次,但我似乎无法解决当前的问题。

我一直致力于一些小型元素,例如尝试重新创建具有额外功能的其他网站。

我当前的任务是重新创建首页搜索区域,例如 google。

实现和问题

我一直关注浏览器调整大小时网站的响应能力,因此我一直尽可能频繁地使用 Flexbox

实现

带有容器 ID 的主 div,最小高度为 100% 以及相对位置。

容器 div 内有 nav(#nav)、center(#center) 和 footer(#footer) 元素及其各自的 id。

  • nav:柔性显示、基线对齐元素和最小高度 9vh。
  • center:宽度为 100%,最小高度为 10vh;
  • 页脚:绝对位置,底部0,宽度100%

我对页脚以及如何将其保留在页面底部同时在缩小浏览器时保持响应进行了一些研究,但我似乎已经停止了,或者可能我还没有完全理解如何让页脚停在某个元素处。

问题

问题是我无法使页脚正常工作。我不希望它与主要内容中的按钮和链接重叠。调整浏览器大小时,它会停止在搜索栏处,但我希望它在遇到按钮时停止。

正如您从 JSbin 链接中的代码片段 block 中看到的那样,我的页脚有问题。

当前 HTML + CSS 文件和输出:JSBin

*{
margin: 0px;
padding: 0px;
}
html, body {
height: 100%;
}

#container {
min-height:100%;
position:relative;

}

a:visited{
color: #609;
}

/* ----- Navigation Styling ----- */

#nav {
display: flex;
border: 10px solid goldenrod; /*Colourful Borders*/
min-height:9vh;
justify-content:flex-end;
align-items: baseline;
background:#ff0;
padding:10px;
}

/*Nav Content*/

/* ----- Center Styling ----- */

#center {
width: 100%;
background-color: white;
min-height:10vh;
}

.ctr_img {
height: 92px;
width: 272x;
padding-top: 20px;

}
.ctr_img:hover {
-webkit-filter: invert(100%);
}

.img_mic {
padding: 0 8px;
float: right;
display:inline-block;
top: -30px;
position: relative;
}

.srch_bx {
border-style: hidden;
box-shadow: 0 2px 2px 0 rgba(0,0,0,0.16), 0 0 0 1px rgba(0,0,0,0.08);
max-width: 40%;
min-height: 40px;
}

.srch_in {
width: 100%;
border-radius: 2px;
border: none;
overflow: auto;
outline: none;
left: 0px;
background: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D) transparent;
font: 16px arial,sans-serif;
display: inline-block;
text-align: start;
}

.mic_set {
background-size: 30px 30px;
height: 100%;
width: 26px;
}

.btn_sbmt {
padding: 20px 50%;
min-height: 20px;
display: flex;
justify-content: center;
}

.btn_srch, .btn_lcky {
background-color: #f2f2f2;
border: 1px solid #f2f2f2;
border-radius: 2px;
color: #757575;
font-family: arial,sans-serif;
font-size: 1vw;
font-weight: bold;
margin: 11px 4px;
padding: 0 16px;
height: 36px;
}

.lang_diff{
max-height: 28px;
font-size: 0.9vw;
margin-bottom: 24px;
font-family: arial,sans-serif;
}

/* Footer Styling */

#footer {
position:absolute;
bottom:0;
height: 5.2em; /* Height of the footer */
width: 100%;
min-height: 10vh;
background-color: #f2f2f2;
line-height: 40px; /*Specifies the line height.*/
min-width: 400px;


}

.ctry {
display: flex;
margin-left: 30px;
text-align: left;
color: rgba(0,0,0,.54);
border-top: 1px solid #e4e4e4;
max-width: 150px;
}

.ctry_ftr {
font-size: 1vw;
}

.opt_ftr {
display: flex;
justify-content:space-between;
border: 1px solid #e4e4e4;
}

span.blft_ftr a, span.brght_ftr a, span.brght_stg a {
text-decoration: none;
color: #666;
margin-left: 16px;
font-size: 1vw;
}

.brght_ftr{
margin-right: 30px;
float: right;
}

.adv_ftr {
padding: 0 16px;
text-decoration: none;
display: inline-block;
}
<!DOCTYPE html>
<html>
<head>
<title>Testing Ground</title>
<link rel="stylesheet" type="text/css" href="style.css" />
<link rel="stylesheet" type="text/css" href="reset.css" />
<link rel="icon" href="http://www.favicon.cc/logo3d/53653.png" />
<meta charset="UTF-8">
</head>
<body> <!--FLEX-->
<div id="container"> <!-- Added New for Footer behaviour -->
<nav id="nav" class="nav_cls">
<!--Currently at work-->
<p>Navigation Bar Content</p>
</nav>
<center id="center">
<a class="img_link" href="">
<img class="ctr_img" src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/PM5544_with_non-PAL_signals.png/250px-PM5544_with_non-PAL_signals.png" alt="image">
</a>
<div class="in_forms">
<div class="srch_bx">
<form>
<input class="srch_in" type="text" name="search"/>
</form>
<div class="img_mic">
<a href="https://youtu.be/Ye8mB6VsUHw ">
<img class="mic_set" src="https://cdn.sesamestreet.org/sites/default/files/1496328210/Cookie_Big.png" />
</a>
</div>
</div>
</div>
<div>
<div class="btn_sbmt">
<input class="btn_srch" type="submit" value="Don't Hide me!" name="search"/>
<input class="btn_lcky" type="submit" value="Seriously, Don't!" name="luck"/>
</div>
</div>
<div class="lang_diff">
Links:
<a class="lang" href="">Link1</a>
<a class="lang" href="">Link2</a>
<a class="lang" href="">Link3</a>
<a class="lang" href="">Link4</a>
<a class="lang" href="">Link5</a>
</div>
</center>
<footer id="footer">
<div class="ctry">
<span class="ctry_ftr">
First half of a footer
</span>
</div>
<div class="opt_ftr">
<span class="blft_ftr">
<a class="adv_ftr" href="">Footer Link 1</a>
<a class="adv_ftr" href="">Footer Link 2</a>
<a class="adv_ftr" href="">Footer Link 3</a>
</span>
<span class="brght_ftr">
<a class="adv_ftr" href="">Footer Link 4</a>
<a class="adv_ftr" href="">Footer Link 5</a>
</span>
</div>
</footer>
</div>
</body>
</html>

访问过的网站

最佳答案

:)

首先恭喜您遵守了询问 SO 的规则。

您的问题来自于将页脚置于文档流之外(position:absolute)。看起来您希望将其放置在文档流中。因此,将 position:absolute 更改为 position:relative (或 static)。

要使其始终保持在屏幕底部,请将 #container 调整为 display:flex;flex-direction:column;min-height:100vh并使#center成长:

#footer {
position:static; /* this is default value of position
* so you could just remove `position:absolute`
* from your code.
*/
}
#container {
min-height: 100vh;
display: flex;
flex-direction: column;
}
#center {
flex-grow: 1;
}

查看它的工作情况:

* {
margin: 0px;
padding: 0px;
}

html,
body {
height: 100%;
}

#container {
min-height: 100%;
position: relative;
}

a:visited {
color: #609;
}


/* ----- Navigation Styling ----- */

#nav {
display: flex;
border: 10px solid goldenrod;
/*Colourful Borders*/
min-height: 9vh;
justify-content: flex-end;
align-items: baseline;
background: #ff0;
padding: 10px;
}


/*Nav Content*/


/* ----- Center Styling ----- */

#center {
width: 100%;
background-color: white;
min-height: 10vh;
}

.ctr_img {
height: 92px;
width: 272x;
padding-top: 20px;
}

.ctr_img:hover {
-webkit-filter: invert(100%);
}

.img_mic {
padding: 0 8px;
float: right;
display: inline-block;
top: -30px;
position: relative;
}

.srch_bx {
border-style: hidden;
box-shadow: 0 2px 2px 0 rgba(0, 0, 0, 0.16), 0 0 0 1px rgba(0, 0, 0, 0.08);
max-width: 40%;
min-height: 40px;
}

.srch_in {
width: 100%;
border-radius: 2px;
border: none;
overflow: auto;
outline: none;
left: 0px;
background: url(data:image/gif;base64,R0lGODlhAQABAID/AMDAwAAAACH5BAEAAAAALAAAAAABAAEAAAICRAEAOw%3D%3D) transparent;
font: 16px arial, sans-serif;
display: inline-block;
text-align: start;
}

.mic_set {
background-size: 30px 30px;
height: 100%;
width: 26px;
}

.btn_sbmt {
padding: 20px 50%;
min-height: 20px;
display: flex;
justify-content: center;
}

.btn_srch,
.btn_lcky {
background-color: #f2f2f2;
border: 1px solid #f2f2f2;
border-radius: 2px;
color: #757575;
font-family: arial, sans-serif;
font-size: 1vw;
font-weight: bold;
margin: 11px 4px;
padding: 0 16px;
height: 36px;
}

.lang_diff {
max-height: 28px;
font-size: 0.9vw;
margin-bottom: 24px;
font-family: arial, sans-serif;
}


/* Footer Styling */

#footer {
/* position: absolute;
bottom: 0; */
height: 5.2em;
/* Height of the footer */
width: 100%;
min-height: 10vh;
background-color: #f2f2f2;
line-height: 40px;
/*Specifies the line height.*/
min-width: 400px;
}

.ctry {
display: flex;
margin-left: 30px;
text-align: left;
color: rgba(0, 0, 0, .54);
border-top: 1px solid #e4e4e4;
max-width: 150px;
}

.ctry_ftr {
font-size: 1vw;
}

.opt_ftr {
display: flex;
justify-content: space-between;
border: 1px solid #e4e4e4;
}

span.blft_ftr a,
span.brght_ftr a,
span.brght_stg a {
text-decoration: none;
color: #666;
margin-left: 16px;
font-size: 1vw;
}

.brght_ftr {
margin-right: 30px;
float: right;
}

.adv_ftr {
padding: 0 16px;
text-decoration: none;
display: inline-block;
}

#footer {
line-height: 2.42em;
}
#container {
min-height: 100vh;
display: flex;
flex-direction: column;
}

#center {
flex-grow: 1;
}
<div id="container">
<!-- Added New for Footer behaviour -->
<nav id="nav" class="nav_cls">
<!--Currently at work-->
<p>Navigation Bar Content</p>
</nav>
<center id="center">
<a class="img_link" href="">
<img class="ctr_img" src="https://upload.wikimedia.org/wikipedia/commons/thumb/c/c4/PM5544_with_non-PAL_signals.png/250px-PM5544_with_non-PAL_signals.png" alt="image">
</a>
<div class="in_forms">
<div class="srch_bx">
<form>
<input class="srch_in" type="text" name="search" />
</form>
<div class="img_mic">
<a href="https://youtu.be/Ye8mB6VsUHw ">
<img class="mic_set" src="https://cdn.sesamestreet.org/sites/default/files/1496328210/Cookie_Big.png" />
</a>
</div>
</div>
</div>
<div>
<div class="btn_sbmt">
<input class="btn_srch" type="submit" value="Don't Hide me!" name="search" />
<input class="btn_lcky" type="submit" value="Seriously, Don't!" name="luck" />
</div>
</div>
<div class="lang_diff">
Links:
<a class="lang" href="">Link1</a>
<a class="lang" href="">Link2</a>
<a class="lang" href="">Link3</a>
<a class="lang" href="">Link4</a>
<a class="lang" href="">Link5</a>
</div>
</center>
<footer id="footer">
<div class="ctry">
<span class="ctry_ftr">
First half of a footer
</span>
</div>
<div class="opt_ftr">
<span class="blft_ftr">
<a class="adv_ftr" href="">Footer Link 1</a>
<a class="adv_ftr" href="">Footer Link 2</a>
<a class="adv_ftr" href="">Footer Link 3</a>
</span>
<span class="brght_ftr">
<a class="adv_ftr" href="">Footer Link 4</a>
<a class="adv_ftr" href="">Footer Link 5</a>
</span>
</div>
</footer>
</div>

另一个需要解决的小问题是对 #footer 使用以 px 表示的 line-height,而其高度以 表示em,导致页面出现垂直滚动条。 line-height:2.42em 修复了它。


另一方面,如果我不提及您的示例因在窄设备上降低字体大小而导致的主要可访问性问题,就给您这个答案是不公平的。尝试在任何移动设备上打开示例页面,您就会明白我的意思。在任何时候,页面中的元素都应保持允许用户阅读的字体大小。

网页的主要目的是呈现内容。如果您以禁止用户接收消息的形式呈现内容,则您的页面不会执行其功能。

关于html - 缩小浏览器时,响应式页脚显示在部分内容上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50078553/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com