- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我在设计基于图像的下拉菜单时遇到了 2 个问题:
flex
ed 容器内的元素保持与相邻元素相同的高度。 [如果你看我的jsFiddle , 悬停显示的每个滑出内容,应与图标高度相同。]position:absolute
,我一直无法上类。 [具体来说,每张图片上面都应该有文字,给它们贴上标签。]最佳答案
为了清晰和代码回收,CSS 被分为四个主要部分:
[theme="gr-blue"]
.可以很容易地与其他主题一起扩展。 .slideout-content
的左右对齐您可以简单地使用
row-reverse
方向和
justify-content: flex-end
对于一个奇怪的
.menu-item
和默认
row
偶数方向
.menu-item
图片文字叠加
position: relative
和
absolute
父/子元素构造。 child
content
填充了从
data-overlay
获得的覆盖文本自定义属性。
filter: brightness(1.2)
由于 IE11 无法处理此问题,因此需要一些替代方案。 .slideout-content
的颜色不透明度显示一些悬停效果。 margin
的所有使用并将间距移至父级 padding
在适用的情况下。当使用相对大小 ('%') 与 box-sizing: border-box
结合使用时,这一点尤其重要。 ,如 margin
将 child 的体型扩大到 100% 以上。 flex: 1
要允许元素增长,请使用 flex-grow: 1
而是用于 IE11。 dir="ltr"
在 <body>
至dir="rtl"
测试文档阅读顺序。 footer {...height: 5vh...}
它的内容不够高,因此会溢出,在页脚下方创建一个白条。
height
必须至少大于/等于其子项的高度(计算
line-height + padding + border + margin
=> 是否添加
padding + border
取决于
box-sizing
)。
.slideout::after
父使用中从顶部和中心的 3/4:
.slideout::after { top: 75%; left: 50%; transform: translate(-50%, -50%) }
,我相应地修改了 CSS。查看
w3schools: CSS Layout - Horizontal & Vertical Align有关定位的更多信息。
/***********/
/* GLOBALS */
/***********/
html,body { width: 100%; max-width: 100%; height: 100% }
html { -webkit-box-sizing: border-box; box-sizing: border-box }
*, *:before, *:after{ -webkit-box-sizing: inherit; box-sizing: inherit }
/* remove/override default element default */
html { -ms-text-size-adjust: 100%; -webkit-text-size-adjust: 100% }
body { margin: 0 }
ul,li { list-style-type: none; padding: 0; margin: 0 }
a { text-decoration: none; color: inherit }
p { margin: 0; padding: 1em 0 }
/* for debugging (put in <body>) */
[outlines="1"] * { outline: 1px dashed }
/*************/
/* MECHANISM */
/*************/
/******************/
/* Flexbox Layout */
/******************/
/* FBL EITHER (specific) */
/*.wrapper, .touch-menu, .menu-item,
.menu-item * { display: flex }/**/
/* FBL OR (generic, if you want to insert elements on-the-fly without classes) */
div, ul, li, a, img { display: flex }/**/
/* .wrapper is an FBL column of three main rows, pushed apart */
.wrapper { flex-direction: column; justify-content: space-between }
/* .touch-menu fills available space and is a row that wraps its kids */
.touch-menu { flex-grow: 1; flex-flow: row wrap }
/*
Because .menu-item width is 50% there will always be only two in a row,
simply reverse FBL for first in a row...
*/
.menu-item:nth-child(odd) { flex-direction: row-reverse } /* reverse row logic */
.menu-item:nth-child(odd)>* { justify-content: flex-end } /* ditto */
.slideout-content { flex-grow: 1 } /* grow to fill parent */
.slideout-content ul { flex-direction: column } /* a column of several rows */
.touch-menu,.slideout-content *, /* center all content rows/columns */
.header>*,.footer>* { justify-content: center; align-content: center; align-items: center }
.footer>* { justify-content: flex-end } /* right align footer rows */
/**********/
/* Action */
/**********/
.slideout-content { display: none } /* hide, change to 'flex' to verify positioning */
.slideout:hover+.slideout-content,
.slideout-content:hover { display: flex } /* show on hover */
/**********/
/* Sizing */
/**********/
.wrapper { width: 100%; height: 100% }
.touch-menu { padding: 0 5% }
/* modify 5% to required need, forces size of entire .menu-item */
.menu-item { width: 50% } /* of .touch-menu */
.slideout { width: 50%; position: relative } /* of .menu-item */
.slideout::after { position: absolute; bottom: 0; left: 0; right: 0 }
/* UPDATE 2 */
.slideout::after { top: 75%; left: 50%; transform: translate(-50%, -50%) }
/* redundant, but > 50% will animate .slideout on hover */
.slideout-content { width: 50% } /* otherwise: remove */
/* fill parent */
.header>*, .footer>*,
.slideout img { width: 100% }
.slideout-content * { width: 100%; height: 100% } /* modify to your needs */
/**********************/
/* EYE-CANDY generics */
/**********************/
.header { border-bottom-style: inset }
.header .headline { padding: 0.67em 0; font-size: 2.6vw; font-weight: bold }
.touch-menu .menu-item { padding: 1vh }
.slideout { cursor: pointer }
.slideout::after { content: attr(data-overlay); font-size: .75vw; padding: .25vw }
.slideout-content { font-size: 1.5vw; padding: .25vw; box-shadow: 0px 8px 16px 0px rgba(0,0,0,0.2) }
.slideout-content ul * { border-radius: 0.5vw }
.slideout-content li { padding: .125vw }
.slideout-content a { border: thin inset }
.footer { padding: 2.65vmin .75vw; font-size: .75vw; border-top: outset }
/* ONLY required when 'FBL EITHER' used */
.header { text-align: center }
.footer { text-align: right }
/*********************/
/* EYE-CANDY theming */
/*********************/
body { font-family: "Lato", sans-serif }
body[theme="gr-blue"] {
color: GoldenRod;
/*
Permalink - use to edit and share this gradient:
https://colorzilla.com/gradient-editor/#c7d7dd+0,a7cfdf+16,5085a0+57,23538a+100
*/
background-color: rgb(199,215,221); /* Old browsers */
background-image: -moz-linear-gradient(top, rgba(199,215,221,1) 0%, rgba(167,207,223,1) 16%, rgba(80,133,160,1) 57%, rgba(35,83,138,1) 100%); /* FF3.6-15 */
background-image: -webkit-linear-gradient(top, rgba(199,215,221,1) 0%, rgba(167,207,223,1) 16%, rgba(80,133,160,1) 57%, rgba(35,83,138,1) 100%); /* Chrome10-25,Safari5.1-6 */
background-image: linear-gradient(to bottom, rgba(199,215,221,1) 0%, rgba(167,207,223,1) 16%, rgba(80,133,160,1) 57%, rgba(35,83,138,1) 100%); /* W3C, IE10+, FF16+, Chrome26+, Opera12+, Safari7+ */
filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#c7d7dd', endColorstr='#23538a',GradientType=0 ); /* IE6-9 */
}
[theme="gr-blue"] .header { color: AliceBlue; background-color: #605e5e; border-bottom-color: #888888 }
[theme="gr-blue"] .footer { background-color:#605e5e; border-color: GoldenRod }
[theme="gr-blue"] .slideout::after { color: AliceBlue; background-color: rgba(115,110,111,.6) }
[theme="gr-blue"] .slideout-content { background-color: rgba(115,110,111,.6) } /* #736e6f */
[theme="gr-blue"] .slideout-content a { border-color: #888585 }
[theme="gr-blue"] .slideout-content li:hover { background-color: rgba(115,110,111,.6) }
<body theme="gr-blue" dir="ltr" outlines="0">
<div class="wrapper">
<div class="header">
<div class="headline">Links of Links</div>
</div>
<div class="touch-menu">
<div class="menu-item">
<div class="slideout" data-overlay="overlay 1">
<img src="https://avatarfiles.alphacoders.com/105/thumb-105223.jpg" alt="scale">
</div>
<div class="slideout-content">
<ul>
<li><a href="#">scaleLink 1</a></li>
<li><a href="#">scaleLink 2</a></li>
<li><a href="#">scaleLink 3</a></li>
</ul>
</div>
</div>
<div class="menu-item">
<div class="slideout" data-overlay="overlay 2">
<img src="https://avatarfiles.alphacoders.com/105/thumb-105223.jpg" alt="scale">
</div>
<div class="slideout-content">
<ul>
<li><a href="#">bookLink 1</a></li>
<li><a href="#">bookLink 2</a></li>
<li><a href="#">bookLink 3</a></li>
<li><a href="#">bookLink 4</a></li>
<li><a href="#">bookLink 5</a></li>
<li><a href="#">bookLink 6</a></li>
</ul>
</div>
</div>
<div class="menu-item">
<div class="slideout" data-overlay="overlay 3">
<img src="https://avatarfiles.alphacoders.com/105/thumb-105223.jpg" alt="scale">
</div>
<div class="slideout-content">
<ul>
<li><a href="#">ugavelLink 1</a></li>
<li><a href="#">ugavelLink 2</a></li>
<li><a href="#">ugavelLink 3</a></li>
<li><a href="#">ugavelLink 4</a></li>
</ul>
</div>
</div>
<div class="menu-item">
<div class="slideout" data-overlay="overlay 4">
<img src="https://avatarfiles.alphacoders.com/105/thumb-105223.jpg" alt="scale">
</div>
<div class="slideout-content">
<ul>
<li><a href="#">lgavelLink 1</a></li>
<li><a href="#">lgavelLink 2</a></li>
<li><a href="#">lgavelLink 3</a></li>
</ul>
</div>
</div>
</div>
<div class="footer">
<div>
Powered by <a href="https://www.youtube.com/watch?v=dQw4w9WgXcQ&feature=emb_logo" target="_blank">Barack Obama</a>
</div>
</div>
</div>
</body>
关于javascript - 响应式相对元素调整大小 + 响应式文本叠加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63257695/
我正在尝试检查 Entry 中是否存在重复项,并使用内联消息提醒用户该数字存在。 $(document).ready(function(){ $("#con1").blur(function(
我有一个基于类的 View 。我在引导模式上使用 Ajax。为了避免页面刷新,我想使用此类基于 View 返回 JSON 响应而不是 HTTP 响应,但我只看到了如何为基于函数的 View 返回 JS
关闭。这个问题是not reproducible or was caused by typos .它目前不接受答案。 这个问题是由于错别字或无法再重现的问题引起的。虽然类似的问题可能是on-topi
我有一个大型内部企业基于 Web 的应用程序在 IIS6 上运行 ASP.NET 3.5,生成 401 个“未经授权”响应,然后是 200 个“Ok”响应(如 Fiddler 所述)。我知道为什么会发
感谢您研究我的问题。 我有一个node/express服务器,配置了一个server.js文件,它调用urls.js,而urls.js又调用 Controller 来处理http请求,所有这些都配置相
当我使用以下命令时,我得到正确的 JSON 响应: $ curl --data "regno=&dob=&mobile=" https://vitacademics-rel.herokuapp.co
我有一个非常简单的 RESTful 服务,它通过 POST 接收一些表单数据,其目的是在云存储(Amazon S3、Azure Blob 存储等)中简单地保留文本主体(具有唯一 ID)作为一个文件..
UDP 不发送任何 ack,但它会发送任何响应吗? 我已经设置了客户端服务器UDP程序。如果我让客户端向不存在的服务器发送数据,那么客户端会收到任何响应吗? 我的假设是; 客户端 --> 广播服务器地
我有一个电梯项目,其中 有一个扩展 RestHelper 的类,看起来像这样 serve{ "api" / "mystuff" prefix { case a
我们正在寻求覆盖 Kong 错误响应结构并编写自定义消息(即用我们的自定义消息替换“超出 API 速率限制”、“无效的身份验证凭据”等)。 我们要找的错误响应结构(代码是自定义的内部错误代码,与HTT
我正在尝试监听 EKEventStoreChangedNotification 以检查当我的应用程序处于后台时日历是否已更改。 我在 View Controller 的 initWithNibMeth
我了解 javascript,并且正在学习 ASP.NET C# 我想要做什么(完成的是javascript): document.getElementById('divID-1'
是否可以过滤所有 har 对象并仅获取 POST 请求/响应?也许在初始化 BrowserMobProxyServer 期间是这样做的方法?我需要将 har 对象保存到文件中并上传到 har 查看器。
我正在尝试向 Oauth 的 API 发送响应。遗憾的是,Symfony2 文档在解释 $response->headers->set(...); 的所有不同部分方面做得很差。 这是我的 OauthC
我正在尝试测试用例来模拟 api 调用,并使用 python 响应来模拟 api 调用。 下面是我的模拟, with responses.RequestsMock() as rsps: url
在尝试在 Haskell 中进行一些领域驱动设计时,我发现自己遇到了这个问题: data FetchAccessories = FetchAccessories data AccessoriesRes
我正在与 ANT+ USB 棒连接,并用项目 react 器替换我自己天真的“MessageBus”,因为它看起来非常合适。 USB接口(interface)本质上是异步的(单独的输入/输出管道),我
我正在将项目迁移到AFNetworking 2.0。使用AFNetworking 1.0时,我编写了代码来记录控制台中的每个请求/响应。这是代码: -(AFHTTPRequestOperation *
我有以下代码段。 ajaxRequest.onreadystatechange = function(){ if(ajaxRequest.readyState == 4){
我有问题......我在 php 中有一个监听器脚本可以执行以下操作: if ($count != 1) {echo 'no';} else { echo "yes";} 因此它会回显"is"或“
我是一名优秀的程序员,十分优秀!