html - 有没有办法在不覆盖它们的情况下将 div 居中到列之间?
问题描述
我需要将它们放在两列之间,而不会被它覆盖。我试过浮动,但它显然涵盖了下面的文字。
h2 {
position: absolute;
margin: 0 25%;
margin-top: 25%;
}
解决方案
使用float
和一些margin
/ clear
,使用已知大小,您可以在列 CSS 布局中管理它:
*{box-sizing:border-box;margin:0;}
article {
column-count:2;
height:500px;
width:1200px;
margin:auto;
overflow:hidden;
text-align:justify;
}
article header {
float:right;
width:300px;
height:200px;
padding:1em;
margin-left:0.5em;
margin-right:-160px;
background:gray;
text-align:center;
}
article:before {
content:'';
float:left;
width:0;
height:440px;
}
article > b {
float:left;
clear:left;
height:200px;
width:150px;
float:left;
}
p {margin:0 1em 1em;}
<article>
<header class="none">
<h1>some title text to lay over here and see what we can do about it to set it in the middle</h1>
<a href>Written by Lorem Hardy</a>
</header>
<b class="none"><!-- push it next col--></b>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p>
</article>
但没用,因为它随时可能坏掉。
加载文档后,javascript 方法可以帮助检索所需的大小。使用var()
可以在 CSS 样式中轻松更新/重置和重用的 CSS,然后 class
在通过 js 获取尺寸后删除,可以减少代码并提前准备。
window.onload = function() {
let article = document.querySelector("article");
let header = document.querySelector("article>header:first-of-type");
let b = document.querySelector("article>b:first-of-type");
let Hspacer = article.offsetHeight + "px";
header.classList.toggle("none");/* let header take its style and width */
let headerH = header.offsetHeight + "px";/* now how tall is it ? */
article.style.setProperty("--Hspacer", Hspacer);
article.style.setProperty("--headerH", headerH);
b.classList.toggle("none");/* finalize the spacer standing in column 2 */
};
* {
box-sizing: border-box;
margin: 0;
}
html {
--Hspacer: ;
/*to be updated via js */
--headerH: ;
/*to be updated via js */
--headerW: 260px;
/* init header 's width */
}
article {
column-count: 2;
height: var(--Hspacer);
max-width: 900px;
margin: auto;
overflow: hidden;
text-align: justify;
}
article header:not([class=none]) {
float: right;
width: var(--headerW);
height: var(--headerH);
padding: 1em;
margin-left: 0.5em;
margin-right: calc( ( var(--headerW) / 2)* -1);
background: gray;
text-align: center;
}
article:before {
content: '';
float: left;
width: 0;
height: var(--Hspacer);
}
article>b:not([class=none]) {
float: left;
clear: left;
height: var(--headerH);
width: calc( var(--headerW) / 2);
float: left;
}
header h1 {
margin-bottom: 0.75em;
}
p {
margin: 1em;
}
<article>
<header class="none">
<h1>some title text to lay over here and see what we can do about it to set it in the middle</h1>
<a href>Written by Lorem Hardy</a>
</header>
<b class="none"><!-- push it next col--></b>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est.
Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus
lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor,
facilisis luctus, metus</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est.
Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus
lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor,
facilisis luctus, metus</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est.
Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus
lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor,
facilisis luctus, metus</p>
<p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est.
Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus
lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor,
facilisis luctus, metus</p>
</article>
灵感来自https://codepen.io/gc-nomade/pen/dyYzGYX
如果您的列容器部分流动,您可能需要更新--Hspacer
值:https ://codepen.io/gc-nomade/pen/dypaydo
推荐阅读
- python - LSTM/GRU 中的隐藏状态在预测期间会发生变化吗?
- rust - 如何将str更改为rust中的数组
- regex - jmeter html报告生成 - 跳过一个thred组
- c++ - 带有向量的 C++ 魔术 8 球
- python - 为什么我的 return 语句没有显示任何输出?
- python-3.x - NameError:名称“子弹”未定义
- r - 为什么一个 R 函数包含大约。400行代码有633Kb?
- javascript - 在 javascript+flow 中,将 ?string 发送到需要字符串的函数中
- html - 用于跟随兄弟节点和自身节点的 XPath?
- python - Flask、Marshmallow 3 和 webargs use_args 无法解析参数