gpt4 book ai didi

css - 旋转导航菜单

转载 作者:行者123 更新时间:2023-11-28 03:29:02 25 4
gpt4 key购买 nike

我正在尝试设计一个导航菜单,它起源于 Angular 落并以 45 度 Angular 分散:

Concept

这是我到目前为止的代码,带有 css。但是,它使用绝对定位。有没有办法让这些旋转的元素一起滑动?

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

ul{
list-style-type: none;
}

a{
text-decoration: none;
}

.menu{
position: absolute;
height:100px;
line-height: 100px;
text-align: center;
vertical-align: middle;
-ms-transform: rotate(-45deg); /* IE 9 */
-webkit-transform: rotate(-45deg); /* Chrome, Safari, Opera */
transform: rotate(-45deg);
}

#logo{
position: absolute;
top: -100px;
left: -100px;
width:200px;
height:200px;
background-color: black;
-ms-transform: rotate(-45deg); /* IE 9 */
-webkit-transform: rotate(-45deg); /* Chrome, Safari, Opera */
transform: rotate(-45deg);
}

#home{
top: 56px;
left: -94px;
width:400px;
background-color: red;
}

#contact{
top: 125px;
left: -123px;
width:600px;
background-color: pink;
}

#about{
top: 100px;
left: 1100px;
width:800px;
background-color: yellow;
}

#nav {
float:left;
background-color: #f2f2f2;
border-bottom: 1px solid #ccc;
border-top: 1px solid #ccc;
line-height:0;
width:100%;
}
<!DOCTYPE html>
<html lang="en">

<head>
<title>Chris Scalzi Portfolio</title>
<link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css" >
</head>

<body>

<nav>
<div id="logo"><a href="*"></a></div>
<div class="menu" id="home"><a href="*"><p>Home</p></a></div>
<div class="menu" id="contact"><a href="*"><p>Contact</p></a></div>
<div class="menu" id="about"><a href="*"><p>About</p></a></div>
</nav>

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.1.0/jquery.min.js"></script>
<script src="script.js"></script>

</body>

</html>

最佳答案

这是我的做法:

  • 首先水平构建菜单,每个元素都在另一个元素之下。
  • 每个菜单项都有 display: table每个子链接都有 display: table-cell => 当您的布局非常简单时,这是在 CSS 中垂直居中的最简单方法。
  • 我会使用链接的填充来调整每个菜单项的高度 => 为用户提供更大的点击/触摸区域(并且您可以使用链接获得不错的 :hover 效果)。一般来说,我会尝试设置尽可能少的固定高度,以便在保留元素的同时允许内容根据需要增长(这样更易于维护)。
  • 然后我会将所有全局大小、定位和旋转放在父元素上:<nav>...</nav> .像这样,您可以通过几个 CSS 规则控制整个组件,而且只有 一个 position: absolute .
  • 最后,您需要调整元素的 width连同 topleft位置,具体取决于您想要的 Angular 以及您希望它在页面上所处的位置(以及每个元素的填充)。

您会在下面找到一个大致基于您的代码的 POC ;)

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

ul {
list-style-type: none;
}

a {
text-decoration: none;
}

.menu-item {
text-align: center;
vertical-align: middle;
display: table;
width: 100%;
}

.menu-item a {
color: white;
text-transform: uppercase;
font-weight: bold;
display: table-cell;
padding: 20px;
}

.menu-item a:hover {
color: black;
}

#logo a {
padding: 60px 0 30px;
background-color: black;
}

#logo a:hover {
background-color: blue;
}

#home a { background-color: red; }
#contact a { background-color: pink; }
#about a { background-color: yellow; }

nav {
/* Pretty much everything is defined here: */
position: absolute;
width: 700px;
-ms-transform: rotate(-45deg);
-webkit-transform: rotate(-45deg);
transform: rotate(-45deg);
top: -40px;
left: -250px;
}
<!DOCTYPE html>
<html lang="en">

<head>
<title>Chris Scalzi Portfolio</title>
<link href="https://fonts.googleapis.com/css?family=Inconsolata" rel="stylesheet">
<link rel="stylesheet" type="text/css" href="style.css" >
</head>

<body>

<nav>
<div class="menu-item" id="logo"><a href="*">LOGO</a></div>
<div class="menu-item" id="home"><a href="*">Home</a></div>
<div class="menu-item" id="contact"><a href="*">Contact</a></div>
<div class="menu-item" id="about"><a href="*">About</a></div>
</nav>

</body>

</html>

关于css - 旋转导航菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44836306/

25 4 0