jquery - 如何长出一个圆圈来覆盖页面并成为菜单
问题描述
我正在尝试制作一个偏移圆的菜单,通常在角落,当你将鼠标悬停在它上面时,它会展开成一个整页菜单。
为了清楚起见,这是一个具有类似机制的投资组合:https ://adrienlaurent.fr/
我最大的问题是我无法弄清楚谷歌的内容,因为“HTML 扩展圆圈成为菜单”不起作用。
我可以偏移圆圈,我可以让它填满页面。然而,它看起来很可怕。即使有过渡属性,它仍然很跳跃。我主要使用 CSS 动画,但也在 jQuery 中尝试了一些东西。
body {
display: flex;
height: 100vh;
}
.circle {
background: orange;
height: 300px;
width: 300px;
border-radius: 50%;
position: fixed;
top: 80vh;
left: -2vw;
transition: height 2s;
transition: width 2s;
transition: top 2s;
transition: left 2s;
}
.circle:hover {
height: 200vh;
width: 200vw;
top: -30vh;
left: -30vw;
}
<body>
<div class="circle"></div>
</body>
同样,任何使过渡更顺畅的建议都很棒。
解决方案
这是我会尝试的:
body {
display: flex;
height: 100vh;
}
.circle {
background: orange;
height: 300px;
width: 300px;
border-radius: 50%;
position: fixed;
top: 80vh;
left: -2vw;
transition-duration: 2s;
transform: scale(1);
}
ul {
opacity: 0;
position: relative;
z-index: 1;
transition: all .5s .5s;
}
li {
color: white;
list-style-type: none;
}
.menu:hover .circle {
transform: scale(20);
top: -30vh;
left: -30vw;
transition-duration: 2s;
}
.menu:hover ul {
opacity: 1;
transition: all .5s .5s;
}
<body>
<div class="menu">
<div class="circle"></div>
<ul>
<li>About</li>
<li>Another menu link</li>
<li>One more!</li>
</ul>
</div>
</body>
我在transition-duration
两个菜单版本中都添加了 ,所以过渡是双向的。我transform:scale
用 100vw/100vh 转换而不是宽度和高度,以保持圆圈完美圆润。但是,如果您想使用这种方法,则不应将任何其他元素(如菜单列表)放入同一元素中,因为文本也会被转换并变得非常大。
推荐阅读
- visual-studio-2019 - VS 2019 配置管理器显示空白配置
- firebird - Firebirdclient 和 Select 语句无故变慢
- javascript - 如何在反应中正确运行第三方脚本?
- go - 在 Go 中使用 IDM(Internet 下载管理器)API
- android - 现代 android 消息应用程序如何在没有前台的情况下工作
- flutter - 如何防止platformViewRegistry出错[flutter-web]
- dns - 如何在 Cockpit 中设置 oVirt 引擎?我收到“部署失败”错误
- r - 无法在 R 中将 xgboost 模型导出为 pmml 格式
- javascript - 我可以为一个组件导入整个库吗
- html - 通过单击具有特定类的框获取值或 ID