gpt4 book ai didi

html - 如何仅使用 CSS 创建这种复杂的布局?

转载 作者:太空狗 更新时间:2023-10-29 13:30:43 24 4
gpt4 key购买 nike

概览

我读过很多“使用 CSS 垂直居中”的教程:

...但是除了垂直居中之外,我的布局还有另一个组件未在任何这些方法中表示。

layout .

此布局有 2 个组件。首先,将页眉和页脚之间的内容垂直和水平居中(即 sticky footer )。我有 fiddle 中的代码来演示,但我无法让它在 IE 中工作(代码在帖子的底部)。

第二个组件是绿色箭头所指的位置。这代表一个隐藏的元素,当点击某些文本时,它会垂直向下展开。但是,我不希望这种扩展将内容向上移动,就好像一切都居中一样......我希望这个元素向下扩展而不影响内容的位置AND 在展开时将粘性页脚向下推。大多数情况下,会出现浏览器滚动条。

所以隐藏元素展​​开的效果应该像横幅从边上掉下来一样。

这是隐藏元素展​​开后的布局:

layout2


问题

那么我如何使用 CSS 实现此布局并使其跨浏览器兼容 如果我需要进一步解释以澄清混淆,请告诉我。


到目前为止的代码

注意...我遗漏了 HTML5 BoilerPlate 附带的一些样板代码.

CSS

/* --------------------------------------------------------------------------
General Layout
-------------------------------------------------------------------------- */
html,body {
height: 100%;
}

body {
background-color: #e3e3e3;
color: #696969;
}

#wrapper {
min-height: 100%;
width: 100%;
min-width: 936px;
}

/* --------------------------------------------------------------------------
Header
-------------------------------------------------------------------------- */
header {
background-color: #232323;
height: 108px;
width: 100%;
margin: auto;
padding: 24px 0px 8px 0px;
position: relative;
}

#header-content {
height: 100%;
width: 800px;
margin: auto;
position: relative;
}

/* --------------------------------------------------------------------------
Footer
-------------------------------------------------------------------------- */
footer {
background-color: #dbdbdb;
border-top: 1px solid #bababa;
height: 30px;
width: 100%;
min-width: 936px;
margin-top: -32px;
position: relative;
}

#footer-content {
border-top: 1px solid #f8f8f8;
height: 100%;
margin: 0px auto;
position: relative;
}

#footer-content > div {
width: 800px;
margin: 0px auto;
}


/* --------------------------------------------------------------------------
DOWNLOADZONE
-------------------------------------------------------------------------- */
#dl-info {
width: 400px;
margin: auto;
display: table-cell !important;
vertical-align: middle;
}

#show-hide {
margin: 8px 0px;
text-align: center;
}

/* --------------------------------------------------------------------------
General helper classes
-------------------------------------------------------------------------- */
.zone {
background: none;
border: 0px none;
height: 100%;
min-height: 100px;
width: 100%;
padding-top: 140px;
padding-bottom: 31px;
display: table;
position: absolute;
top: 0px;
bottom: 0px;
overflow: hidden;
}

.border {
border: 1px solid #454545;
}

.clear {
clear: both;
}


/* Hide from both screenreaders and browsers: h5bp.com/u */
.hidden {
display: none !important;
visibility: hidden;
}

/* Hide only visually, but have it available for screenreaders: h5bp.com/v */
.visuallyhidden {
border: 0;
clip: rect(0 0 0 0);
height: 1px;
margin: -1px;
overflow: hidden;
padding: 0;
position: absolute;
width: 1px;
}

/* Extends the .visuallyhidden class to allow the element to be focusable when navigated to via the keyboard: h5bp.com/p */
.visuallyhidden.focusable:active,
.visuallyhidden.focusable:focus {
clip: auto;
height: auto;
margin: 0;
overflow: visible;
position: static;
width: auto;
}

/* Hide visually and from screenreaders, but maintain layout */
.invisible { visibility: hidden; }

/* Contain floats: h5bp.com/q */
.clearfix:before,
.clearfix:after {
content: "";
display: table;
}

.clearfix:after { clear: both; }

.clearfix { *zoom: 1; }

HTML

<!doctype html>
<!-- paulirish.com/2008/conditional-stylesheets-vs-css-hacks-answer-neither/ -->
<!-- misteroneill.com/improved-internet-explorer-targeting-through-body-classes/ -->
<!--[if lt IE 7]> <html class="no-js ie ie6 lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 7]> <html class="no-js ie ie7 lt-ie9 lt-ie8 lt-ie7" lang="en"> <![endif]-->
<!--[if IE 8]> <html class="no-js ie ie8 lt-ie9 lt-ie8" lang="en"> <![endif]-->
<!--[if IE 9]> <html class="no-js ie ie9 lt-ie9" lang="en"> <![endif]-->
<!--[if (gte IE 9)|!(IE)]>
<!-->
<html class="no-js" lang="en">
<!--<![endif]-->
<head>
<title>Layout</title>
</head>

<body class="select-none">

<div id="wrapper">

<header>
<div id="header-content">
</div><!-- end #header-content -->
</header><!-- end header -->

<div id="downloadzone" class="zone clearfix">

<div id="dl-info">
<div class="border">
<div id="dl-button">Icon Here</div>
<div id="dl-extras">
<div id="dl-filename">text text text</div>
<div id="show-hide">CLICK TO SHOW/HIDE HIDDEN ELEMENT</div>
</div>
</div>
</div>

</div><!-- end #downloadzone -->

</div><!-- end #wrapper -->

<footer>
<div id="footer-content">
<div class="border-highlight">
</div><!-- end .border-highlight -->
</div><!-- end #footer-content -->
</footer><!-- end footer -->

</body>
</html>

最佳答案

如果我理解正确(如果我在这里回答了错误的问题,我深表歉意),您希望一个未知高度的元素水平和垂直居中,它下面可能有一个不应该影响位置的其他元素什么时候显示?

使用溢出怎么样? Here's a demo.我会尽快将代码放在这里。

兼容性警告:使用的垂直居中方法在 Internet Explorer 7 或更低版本中不起作用。

关于html - 如何仅使用 CSS 创建这种复杂的布局?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10473456/

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