【发布时间】:2020-01-08 13:59:05
【问题描述】:
努力寻找正确的标题,而不仅仅是“帮助”和“什么,CSS,为什么?!”的混合体所以希望你们中的几个天才会发现这个......!
我有两列。它们中的每一个都有一个包含徽标的全角 div。这些图像是完全不同的形状,一个是正方形,一个是更全景的纵横比。为了获得平衡的外观,图像设置为最大宽度为 50%,最大高度为 100%。 Flexbox 用于将图像水平和垂直居中。
它们看起来非常好。
// working before wrapping images with links
section.working {
div.flex {
display: flex;
justify-content: center;
align-items: center;
img {
max-width: 50%;
max-height: 100%;
}
}
}
然后我需要添加链接。
https://codepen.io/lenoz/pen/VwZyeOG
这是最简单的问题,因为底行是我用来获得完美布局的原始代码,顶行显示了当图像被包装在标签中以使其链接时会发生什么。一些注意事项:
- 添加颜色只是为了帮助稍微区分边界 - 用于检测链接(红色背景)何时不再受限于其中的图像大小(理想情况下应该如此)
- 这两列在代码中是分开的,而不是共享容器的一部分 - 即,一列无法告知另一列的高度(希望使用 CSS 而不是 JS 来解决此问题)
我应该提一下,当然,添加链接是不可能的.
非常感谢您能帮我找到 CSS 解决方案。
还在吗?如果您想了解有关我尝试修复的更多信息,请继续阅读,其中包含 Chrome 的怪异部分。
不用说,我已经花了很长时间摆弄这个,所以这里有另一个链接,显示了我已经接近的一些努力:https://codepen.io/lenoz/pen/pozpjVq
顶行 (section.help) 是我最近的尝试,但有点混乱只是因为我在中途停下来,遭受了足以导致我发这篇文章的挫败感。
中间一排,我称之为section.weirdness,实际上似乎是一个炎热的时刻的解决方案。如果您像我一样使用 Chrome,当您查看 Codepen 链接时,您可能在这些蓝色块上什么也看不到?
但是尝试从div.flex 中删除display: flex 属性,如果您的Chrome 与我的Chrome 一样,您会看到:
现在,将 same display: flex 属性添加回 same div.flex 选择器,您会发现蓝色块突然不是空白的:
这有多奇怪?浏览器渲染错误还是什么?
现在找到div.image 上的max-width 或max-height 属性,关闭其中一个,然后再次打开,您会发现一切突然又恢复正常了:
不知何故,除了切换它之外没有更改任何 CSS,我们已经从根本不显示链接到它们显示出来并且看起来很完美。你可以看到我是如何设法让自己误以为我已经成功了!
【问题讨论】: