html - 如何将主方法放在屏幕顶部
问题描述
我遇到的问题是我在<main>
标签中输入的任何内容都从屏幕中心开始,但我需要<main>
导航栏上的动画标签。有人知道如何解决这个问题吗?
这是我的第一个“项目”之一,如果有人能帮助我确保它的安全,我很感兴趣。=)
(function() {
var nav = $('nav'),
menu = $('nav h1'),
main = $('main'),
open = false,
hover = false;
menu.on('click', function() {
open = !open ? true : false;
nav.toggleClass('menu-active');
main.toggleClass('menu-active');
nav.removeClass('menu-hover');
main.removeClass('menu-hover');
console.log(open);
});
menu.hover(
function() {
if (!open) {
nav.addClass('menu-hover');
main.addClass('menu-hover');
}
},
function() {
nav.removeClass('menu-hover');
main.removeClass('menu-hover');
}
);
})();
div{
color: white;
}
html, body{
height: 100%;
}
*{
box-sizing: border-box;
margin: 0;
padding: 0;
}
body{
background: #353441;
font-family: tahoma;
line-height: 1.7;
perspective-origin: 0% 50%;
perspective: 800px;
}
main{
margin-top: 0;
}
nav,main{
transition: transform 150ms ease-out;
}
nav{
z-index: 100;
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 16em;
background-color: #353441;
transform: translateX(-16em);
}
nav.menu-active{
transform: translateX(0);
}
nav.menu-hover{
transform: translateX(-15em);
}
nav h1{
z-index: 100;
display: block;
position: absolute;
top: 0;
right: -65px;
height: 60px;
width: 65px;
line-height: 60px;
font-size: .8em;
font-weight: 300;
letter-spacing: 1px;
color: white;
text-transform: uppercase;
text-align: center;
background-color: #353441;
cursor: pointer;
}
nav h1:hover{
color: white;
}
nav ul{
margin: 0;
padding: 0;
}
nav li{
display: inline-block;
padding: 0 1em;
width: 100%;
height: 60px;
color: #9dc6d1;
line-height: 60px;
background-color: #353441;
transition: all .5s ease-in;
}
nav li:nth-of-type(2n){
background-color: #3a3947;
}
nav li:hover{
background: orangered;
color: white;
}
main{
z-index: 0;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
display: flex;
align-items: center;
overflow: hidden;
}
main:after{
content: '';
display: block;
position: absolute;
z-index: 1;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: linear-gradient(to right, transition, rgba(33,33,45,.5));
visibility: hidden;
opacity: 0;
transition: opacity 150ms ease-out, visibility 0s 150ms;
}
main.menu-active{
border-radius: 0.001px;
transform: translateX(16em) rotateY(15deg);
}
main.menu-active:after{
visibility: visible;
opacity: 1;
transition: opacity 150ms ease-out, visibility 0s;
}
main.menu-hover{
border-radius: 0.001px;
transform: translateX(1em) rotateY(1deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--Navigation Bar-->
<nav class="menu-activea">
<h1>---</h1>
<ul>
<li>Domov</li>
<li>Majice</li>
<li>Puloverji</li>
<li>Skodelice</li>
<li>Galerija</li>
<li>O nas</li>
<li>Kontakt</li>
</ul>
</nav>
<main>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
</main>
解决方案
您的主要标签是用 flex 的显示定义的,它将项目与中心对齐。删除 css align-items: center 主标签,所有内容都将被推到顶部:
(function() {
var nav = $('nav'),
menu = $('nav h1'),
main = $('main'),
open = false,
hover = false;
menu.on('click', function() {
open = !open ? true : false;
nav.toggleClass('menu-active');
main.toggleClass('menu-active');
nav.removeClass('menu-hover');
main.removeClass('menu-hover');
console.log(open);
});
menu.hover(
function() {
if (!open) {
nav.addClass('menu-hover');
main.addClass('menu-hover');
}
},
function() {
nav.removeClass('menu-hover');
main.removeClass('menu-hover');
}
);
})();
div{
color: white;
}
html, body{
height: 100%;
}
*{
box-sizing: border-box;
margin: 0;
padding: 0;
}
body{
background: #353441;
font-family: tahoma;
line-height: 1.7;
perspective-origin: 0% 50%;
perspective: 800px;
}
main{
margin-top: 0;
}
nav,main{
transition: transform 150ms ease-out;
}
nav{
z-index: 100;
position: absolute;
top: 0;
left: 0;
bottom: 0;
width: 16em;
background-color: #353441;
transform: translateX(-16em);
}
nav.menu-active{
transform: translateX(0);
}
nav.menu-hover{
transform: translateX(-15em);
}
nav h1{
z-index: 100;
display: block;
position: absolute;
top: 0;
right: -65px;
height: 60px;
width: 65px;
line-height: 60px;
font-size: .8em;
font-weight: 300;
letter-spacing: 1px;
color: white;
text-transform: uppercase;
text-align: center;
background-color: #353441;
cursor: pointer;
}
nav h1:hover{
color: white;
}
nav ul{
margin: 0;
padding: 0;
}
nav li{
display: inline-block;
padding: 0 1em;
width: 100%;
height: 60px;
color: #9dc6d1;
line-height: 60px;
background-color: #353441;
transition: all .5s ease-in;
}
nav li:nth-of-type(2n){
background-color: #3a3947;
}
nav li:hover{
background: orangered;
color: white;
}
main{
z-index: 0;
position: absolute;
top: 0;
left: 0;
bottom: 0;
right: 0;
display: flex;
/* align-items: center; */
overflow: hidden;
}
main:after{
content: '';
display: block;
position: absolute;
z-index: 1;
top: 0;
left: 0;
bottom: 0;
right: 0;
background: linear-gradient(to right, transition, rgba(33,33,45,.5));
visibility: hidden;
opacity: 0;
transition: opacity 150ms ease-out, visibility 0s 150ms;
}
main.menu-active{
border-radius: 0.001px;
transform: translateX(16em) rotateY(15deg);
}
main.menu-active:after{
visibility: visible;
opacity: 1;
transition: opacity 150ms ease-out, visibility 0s;
}
main.menu-hover{
border-radius: 0.001px;
transform: translateX(1em) rotateY(1deg);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<!--Navigation Bar-->
<nav class="menu-activea">
<h1>---</h1>
<ul>
<li>Domov</li>
<li>Majice</li>
<li>Puloverji</li>
<li>Skodelice</li>
<li>Galerija</li>
<li>O nas</li>
<li>Kontakt</li>
</ul>
</nav>
<main>
<div>Lorem ipsum dolor sit amet, consectetur adipisicing elit,
sed do eiusmod
tempor incididunt ut labore et dolore magna aliqua. Ut enim ad
minim veniam,
quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo
consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse
cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non
proident, sunt in culpa qui officia deserunt mollit anim id est laborum.</div>
</main>
推荐阅读
- macos - macOS 将 USB 设备专用于特定应用程序
- asp.net-mvc - 如何根据 Drop List 使@Html.EditorFor 只读
- python - 从一个元组和另一个字典的键初始化一个新字典
- c# - C# 类型在命名空间中不存在/名称在当前上下文中不存在
- javascript - 如何在不使用 document.referrer 的情况下获取上一页域
- javascript - 在 NodeJS 中将多个函数参数合二为一
- python - 将独立操作系统进程的输出嵌入到 pyqt 小部件中
- python-3.x - 如何解决 NoneType 对象错误
- python-3.x - 将列表列表中的字符串连接 4
- python - 在数据框中使用带有 NaN 的 isin