html - 为什么我的部分没有低于 HTML 和 CSS 的标题?
问题描述
您好,我是 HTML 和 CSS 的新手。
我有一个关于我的代码的快速问题。
客观的:
我的目标是为我的页面实现以下布局。
Navigation bar,
Title (h1),
Title (h2),
Button,
Section (About me)
代码:
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
html,
body {
background-color: #fff;
font-family: 'Lato', 'Arial', 'sans-serif';
font-weight: 300;
text-rendering: optimizeLegibility;
overflow-x: hidden;
}
.row {
max-width: 1140px;
margin: 0 auto;
}
section {
padding: 80px 0;
}
.title-text-box {
position: absolute;
width: 100%;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
letter-spacing: 2px;
color: white;
}
.title-text-box h1, .title-text-box h2{
text-shadow: 0px 0px 6px rgba(50,25,55,0.5);
}
.header-img {
background-image: linear-gradient(to right,#ff7e5f, #feb47b);
padding: 40px;
}
.title-text-box h1 {
font-size: 280%;
margin-bottom: 10px;
}
.main-nav {
float: right;
list-style: none;
margin-top: 60px;
}
.main-nav li {
display: inline-block;
margin-left: 40px;
}
.main-nav li:last-child {
margin-right: 20px;
}
.main-nav li a:link,
.main-nav li a:visited {
padding: 7px 0;
color: #5b86e5;
text-decoration: none;
text-transform: uppercase;
font-size: 100%;
}
.main-nav li a:after {
display:block;
content: '';
border-bottom: solid 3px #ff5e62;
border-radius: 25px;
transform: scaleX(0);
transition: transform 250ms ease-in-out;
}
.main-nav li a:hover:after {
transform: scaleX(1);
}
.btn:link,
.btn:visited {
display: inline-block;
padding: 20px 30px;
margin-top: 90px;
text-decoration: none;
background-color: #fff;
border-radius: 10px;
color: #ff5e62;
transition: all .2s;
}
.btn:hover {
transform: translateY(-3px);
box-shadow: 0 10px 20px rgba(0, 0, 0, 0.2);
}
.btn:active {
transform: translateY(-1px);
box-shadow: 0 5px 20px rgba(0, 0, 0, 0.2);
}
<!DOCTYPE html>
<html lang="en" dir="ltr">
<head>
<meta charset="utf-8">
<title>Title</title>
</head>
<link rel="stylesheet" href="style/style.css">
<body>
<header>
<nav>
<div class="row">
<ul class="main-nav">
<li><a href="#">Home</a></li>
<li><a href="#">About me</a></li>
<li><a href="#">Portfolio</a></li>
<li><a href="#">Contact</a></li>
</ul>
</div>
</nav>
<div class="title-text-box header-img">
<h1>Header1</h1>
<h2>Header2.</h2>
<a class="btn" href="#">Discover</a>
</div>
</header>
<section class="section-about-me">
<div class="row">
<h3>About me</h2>
</div>
</section>
</body>
</html>
关于我当前代码的问题:
我真的很困惑,为什么该about me
部分在 的下方nav-bar
和上方header
?而html
它在标题下方?
此外,代码片段仅适用于全屏。我怎样才能把它放在下面的示例屏幕上?
谢谢
解决方案
about me 部分位于导航栏和标题下方,因为您在标题上使用了绝对定位:
.title-text-box {
position: absolute;
width: 100%;
top: 40%;
left: 50%;
transform: translate(-50%, -50%);
text-align: center;
letter-spacing: 2px;
color: white;
}
因此,.title-text-box
将是顶部的 40% 和剩余的 50%。无论此容器中的其他(相对)元素位于何处。
关于第二个问题,我建议深入研究响应式布局设计。您可以从中学习很多有用的模板和框架。
我建议使用 CSS 或任何现有的 CSS 库(例如Bootstrap )进行HTML 布局和flex 布局。
在我看来,学习模板和布局的现有模板很不错 startbootstrap。但这只是个人喜好。
推荐阅读
- delphi - Delphi:dbgrid 单元格按回车键进入下一个单元格
- aframe - 修复了 Aframe 中的 UI 元素
- math - 查找按词汇顺序总和为给定数字的数千组的第 n 个出现
- awk - 在 awk 中打印最大值有什么问题
- php - 我在 Laravel 上收到“一般错误:1364”,说我没有用户名的默认值,有人可以帮助我吗?
- python - 用前一个和前一个特定行的平均值填充多个日期列的缺失值
- python - 如何在mac上使用python添加热键处理程序?
- java - 如何通过组策略将证书导入 Java Keystore
- reactjs - 通过博览会运行的本机应用程序中的守望者警告
- angular - 当我将自定义 PropertyValidator 添加到我的儿子元数据验证器数组时,RadDataForm 失败并出现数组索引插入错误