登录  /  注册
无法使用 svg 图像创建响应式网格区域
P粉022140576
P粉022140576 2023-08-30 19:15:16
[CSS3讨论组]
<p>在我尝试创建一个包含 svg 图像的响应式网格区域时,我遇到了奇怪的行为,例如任意网格区域宽度,以及无法让图像增大或缩小到某个点而不停止。我得到的最接近的是:</p> <p> <pre class="brush:css;toolbar:false;">* { box-sizing: border-box; } body { margin: 0; } header { display: grid; grid-template-columns: auto 1fr; background-color: green; padding: 1rem; } img { width: 100%; max-width: 25vw; min-width: 12rem; background-color: pink; } div { background-color: red; text-align: center; } nav { background-color: yellow; grid-column: span 2; }</pre> <pre class="brush:html;toolbar:false;">&lt;header&gt; &lt;img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 324 413.28'%3E%3Crect class='655de5e2-44d3-4b5a-ae63-e6e7ec799246' x='18' y='18.12' width='288' height='324' fill='blue'/%3E%3C/svg%3E"&gt; &lt;div&gt; &lt;h1&gt;Heading&lt;/h1&gt; &lt;p&gt;Text Line 1&lt;/p&gt; &lt;p&gt;Text Line 2&lt;/p&gt; &lt;p&gt;Text Line 3&lt;/p&gt; &lt;/div&gt; &lt;nav&gt; &lt;a href="#"&gt;Menu Item 1&lt;/a&gt; &lt;a href="#"&gt;Menu Item 2&lt;/a&gt; &lt;a href="#"&gt;Menu Item 3&lt;/a&gt; &lt;a href="#"&gt;Menu Item 4&lt;/a&gt; &lt;a href="#"&gt;Menu Item 5&lt;/a&gt; &lt;a href="#"&gt;Menu Item 6&lt;/a&gt; &lt;/nav&gt; &lt;/header&gt;</pre> </p> <p>我尝试过高度、最小高度、最大高度,甚至在宽度内使用夹子,但收效甚微。也许我只是缺乏理解,就像一些现有的回复所暗示的那样,但不知道如何解决。</p>
P粉022140576
P粉022140576

全部回复(1)
P粉294954447

图像列的宽度不是任意的。

网格容器首先布置结构。然后正在布置物品。

这意味着当图像处于其自然宽度 (100%) 时,第一列的大小将会调整。

当项目以宽度:50% 呈现时,浏览器不会返回并重新调整列的大小。

所以列的大小不是任意的;这是图像的自然宽度。

(这可以说是一个错误或 CSS 限制。)

请注意,当图像为全宽时,此问题不存在:

* {
  box-sizing: border-box;
}

body {
  margin: 0;
}

header {
  display: grid;
  grid-template-columns: auto 1fr;
  background-color: green;
  padding: 1rem;
}

img {
  width: 100%;
  background-color: pink;
}

div {
  background-color: red;
}

nav {
  background-color: yellow;
  grid-column: span 2;
}
<header>
  <div style="background-color: blue">
    <img src="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 324 413.28'%3E%3Crect class='655de5e2-44d3-4b5a-ae63-e6e7ec799246' x='18' y='18.12' width='288' height='324' fill='blue'/%3E%3C/svg%3E">
  </div>
  <div>
    <h1>Heading</h1>
    <p>Text Line 1</p>
    <p>Text Line 2</p>
    <p>Text Line 3</p>
  </div>
  <nav>
    <a href="#">Menu Item 1</a>
    <a href="#">Menu Item 2</a>
    <a href="#">Menu Item 3</a>
    <a href="#">Menu Item 4</a>
    <a href="#">Menu Item 5</a>
    <a href="#">Menu Item 6</a>
  </nav>
</header>

当你尝试 width: 150% 时它会回来:

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2024 //m.sbmmt.com/ All Rights Reserved | php.cn | 湘ICP备2023035733号