【问题标题】:Responsive Web Design in CSSCSS 中的响应式网页设计
【发布时间】:2022-01-18 05:07:26
【问题描述】:

我对使用 CSS 相当陌生,因此一直在努力更好地理解响应式网页设计,以便在我计划用作投资组合项目的网站上实施它。我目前正在尝试在三种不同的屏幕尺寸(以像素为单位)时调整一组三个无序列表和一组 6 个图像的大小。当我在开发模式下打开项目并尝试使用响应式时,页面上没有任何变化,因为它坚持每个项目每行三个的大尺寸。查看我的代码后,似乎我所做的任何事情都不正确,我可以使用一些帮助来审查它。

在我的 CSS 文件中,.ProjectImageGrid 指的是用于根据设备大小对图像进行排序的网格,.AboutMeGrid 是我的三个无序列表的网格,.ProjectImage 和 .AboutMeLists 分别用于两者的格式化。如果您想查看这部分的 HTML 代码,我也会在下面列出,但我认为问题不在该代码中。

.container { /* Sets page margins and max size */
    max-width: 1000px;
    margin: 0 auto;
    text-align: center;
}

.AboutMeGrid {
  display: grid;
  grid-template-columns: 100%;
}

@media (min-width: 600px) {
  .AboutMeGrid {
    grid-template-columns: 50% 50%;
  }
}

@media (min-width: 900px) {
  .AboutMeGrid {
    grid-template-columns: 1fr 1fr 1fr;
  }
}

.ProjectImageGrid {
    display: grid;
    grid-template-columns: 100%;
}

@media (min-width: 600px) {
    .ProjectImageGrid {
        grid-template-columns: 50% 50%;
    }
}

@media (min-width: 900px) {
    .ProjectImageGrid {
        grid-template-columns: 1fr 1fr 1fr;
    }
}

.ProjectImage {
    justify-self: center;
    padding: 4%;
}

.AboutMeLists {
    list-style: none;
    font-style: italic;
    color: blue;
}
<!DOCTYPE html>
<html>
    <head>
        <title>My First Site</title>
        <link rel="stylesheet" href="style.css"
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
    </head>
    <body>

        <div class="container">
            <div class="Intro">
                <img src="Assets/gvbhnj.jpg" width="150" height="150"/>
                <h1 id="MyName">Name Here</h1>
                <h3>Simple Bio</h3>
                <p>You miss 100% of the shots you don't take</p>
            </div>

            <div class="AboutMeGrid">
                <div class="IAm">
                    <h1>I am</h1>
                    <ul class="AboutMeLists">
                        <li>Hard working</li>
                        <li>A team player</li>
                        <li>Willing to try new things</li>
                    </ul>
                </div>
                <div class="Hobbies">
                    <h1>I like to</h1>
                    <ul class="AboutMeLists">
                        <li>Play Baseball</li>
                        <li>Play videogames</li>
                        <li>Practice coding</li>
                    </ul>
                </div>
                <div class="LinkSet">
                    <h1>My Links</h1>
                    <ul class="AboutMeLists">
                        <li>
                            <a href="https://GitHub.com/SampleLink">GitHub</a>
                        </li>
                        <li>
                            <a href="https://LinkedIn.com/in/SampleLink">LinkedIn</a>
                        </li>
                        <li>
                            <a href="https://www.facebook.com/SampleLink/">Facebook</a>
                        </li>
                    </ul>
                </div>
            </div>

            <div>
                <h1>My Projects</h1>
                <div class="ProjectImageGrid">
                    <img class="ProjectImage" src="https://via.placeholder.com/300"/>
                    <img class="ProjectImage" src="https://via.placeholder.com/300"/>
                    <img class="ProjectImage" src="https://via.placeholder.com/300"/>
                    <img class="ProjectImage" src="https://via.placeholder.com/300"/>
                    <img class="ProjectImage" src="https://via.placeholder.com/300"/>
                    <img class="ProjectImage" src="https://via.placeholder.com/300"/>
                </div>
            </div>

        </div>
    </body>
</html>

【问题讨论】:

    标签: html css responsive-design


    【解决方案1】:

    在您的容器上使用flexbox 是一种非常灵敏且适合移动设备的方式来显示您的内容。我在你的 HTML 中添加了一个container 并给它一个弹性显示。另外,我添加了justify-content: center;,以便在调整大小时所有内容都保持在中心。请参阅下面我所做的更改。

    .container { /* Sets page margins and max size */
        max-width: 1000px;
        margin: 0 auto;
        text-align: center;
        display: flex;
        justify-content: center;
        flex-direction: column;
    }
    
    .AboutMeGrid {
      display: grid;
      grid-template-columns: 100%;
    }
    
    @media (min-width: 600px) {
      .AboutMeGrid {
        grid-template-columns: 50% 50%;
      }
    }
    
    @media (min-width: 900px) {
      .AboutMeGrid {
        grid-template-columns: 1fr 1fr 1fr;
      }
    }
    
    .ProjectImageGrid {
        display: grid;
        grid-template-columns: 100%;
    }
    
    @media (min-width: 600px) {
        .ProjectImageGrid {
            grid-template-columns: 50% 50%;
        }
    }
    
    @media (min-width: 900px) {
        .ProjectImageGrid {
            grid-template-columns: 1fr 1fr 1fr;
        }
    }
    
    .ProjectImage {
        justify-self: center;
        padding: 4%;
    }
    
    .AboutMeLists {
        list-style: none;
        font-style: italic;
        color: blue;
    }
    <div class="container">
    <div class="AboutMeGrid">
        <div class="IAm">
            <h1>I am</h1>
            <ul class="AboutMeLists">
                <li>Hard working</li>
                <li>A team player</li>
                <li>Willing to try new things</li>
            </ul>
        </div>
        <div class="Hobbies">
            <h1>I like to</h1>
            <ul class="AboutMeLists">
                <li>Play Baseball</li>
                <li>Play videogames</li>
                <li>Practice coding</li>
            </ul>
        </div>
        <div class="LinkSet">
            <h1>My Links</h1>
            <ul class="AboutMeLists">
                <li>
                    <a href="https://GitHub.com/SampleLink">GitHub</a>
                </li>
                <li>
                    <a href="https://LinkedIn.com/in/SampleLink">LinkedIn</a>
                </li>
                <li>
                    <a href="https://www.facebook.com/SampleLink/">Facebook</a>
                </li>
            </ul>
        </div>
    </div>
    
    <div>
        <h1>My Projects</h1>
        <div class="ProjectImageGrid">
            <img class="ProjectImage" src="https://via.placeholder.com/300"/>
            <img class="ProjectImage" src="https://via.placeholder.com/300"/>
            <img class="ProjectImage" src="https://via.placeholder.com/300"/>
            <img class="ProjectImage" src="https://via.placeholder.com/300"/>
            <img class="ProjectImage" src="https://via.placeholder.com/300"/>
            <img class="ProjectImage" src="https://via.placeholder.com/300"/>
        </div>
    </div>
    </div>

    【讨论】:

    • 您好,谢谢您的建议。我尝试添加您建议的行以解决我的问题。但由于某种原因,它似乎仍然不起作用。根据我得到的其他回复,虽然我意识到我没有将标题添加到我为包含与此相关的代码的问题提交的内容中,所以我上传这个是为了帮助我的代码更容易理解。
    【解决方案2】:

    您可能没有在 html 中设置视口

    如果您没有在 html 的头部包含此行

    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    

    每当您进行响应式设计时,您几乎都需要包含此行,因为它为浏览器提供了更多说明,以帮助确定何时响应。

    【讨论】:

    • 您好,谢谢您的建议。我确实在脑海中包含了视口,只是没有显示头部,所以这是我的错。我将编辑以显示完整的内容。我复制粘贴了您的视口只是为了仔细检查,但它仍然有问题。
    猜你喜欢
    • 2016-12-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-11-03
    • 1970-01-01
    相关资源
    最近更新 更多