繁体   English   中英

如何在css网格上移动元素?

[英]How can I move elements on a css grid?

我想弄清楚如何使用 css 网格定位元素。 我正在使用 Firefox,我可以看到我的区域被正确定义,但是当我尝试移动一些示例内容时,它们并没有移动。

我已经阅读并尝试了很多不同的东西,但我想我实施的解决方案是错误的?

我正在尝试并排放置东西。 就像section1中的内容去sect1,sect2中的内容分别去页面上的section2。

这是我想使用 css 网格移动的 html:

    <div class="wrapper">

    <header class="header">
        <!--<img class="logo" src="imgs/logo.png" alt="logo"> -->
        <h1>LOGO</h1>
        <nav>
            <ul class="nav_links">
                <li><a href="#">Home</a></li>
                <li><a href="#">Tutorials</a></li>
                <li><a href="#">About Us</a></li>
                <li><a href="#"><button class="nav_buttons">Login</button></a></li>
            </ul>
        </nav>
    </header>

    <main>
        <h2>TEXT HERE</h2>
        <div id="sect1">
            <P>MOVE ME/KEEP ME ON THE LEFT SIDE OF SCREEN</P>
        </div>
        <div id="sect2">
            <p>MOVE ME/KEEP ME ON THE RIGHT SIDE OF SCREEN</p>
        </div>
    </main>

    <footer class="foot">
    </footer>

</div>

这是我的 css 文件:

body {
font-family: 'Roboto', sans-serif;
box-sizing: border-box;
background-color: #ededed;
margin: 0;
padding: 0;
}

.wrapper {
    display: grid;
    height: 100vh;
    grid-template-columns: 1fr 1fr;
    grid-template-rows: 80px 5fr 1fr;
    grid-template-areas: 
        "header header"
        "sect1 sect2"
        "foot foot";
}

.wrapper .header {
    grid-area: header;
}

.wrapper main {
    grid-column: 1 / 3;
}

.wrapper main #sect1 {
    grid-area: sect1;
    background-color: lightcyan;
}

.wrapper main #sect2 {
    grid-area: sect2;
    background-color: lightpink;
}

.foot {
    grid-area: foot;
    background-color: rgb(255, 0, 0);
}

Firefox 网格视图

我认为您可以使用subgrid为后代指定网格。 通过这种方式:

 body { font-family: 'Roboto', sans-serif; box-sizing: border-box; background-color: #ededed; margin: 0; padding: 0; } .wrapper { display: grid; height: 100vh; grid-template-columns: 1fr 1fr; grid-template-rows: 80px 5fr 1fr; grid-template-areas: "header header" "sect sect" "foot foot"; } .wrapper .header { grid-area: header; } .wrapper main { grid-area: sect; display: grid; grid-template-columns: subgrid; grid-template-rows: auto 1fr; } .wrapper main h2 { grid-column: 1/-1; } .wrapper main #sect1 { background-color: lightcyan; } .wrapper main #sect2 { background-color: lightpink; } .foot { grid-area: foot; background-color: rgb(255, 0, 0); }
 <div class="wrapper"> <header class="header"> <!--<img class="logo" src="imgs/logo.png" alt="logo"> --> <h1>LOGO</h1> <nav> <ul class="nav_links"> <li><a href="#">Home</a></li> <li><a href="#">Tutorials</a></li> <li><a href="#">About Us</a></li> <li><a href="#"><button class="nav_buttons">Login</button></a></li> </ul> </nav> </header> <main> <h2>TEXT HERE</h2> <div id="sect1"> <P>Section 1</P> </div> <div id="sect2"> <p>Section 2</p> </div> </main> <footer class="foot"> </footer> </div>

我会通过在主标签内使用一个单独的网格来解决这个问题,如下所示:

 body { font-family: 'Roboto', sans-serif; box-sizing: border-box; background-color: #ededed; margin: 0; padding: 0; } .wrapper { display: grid; height: 100vh; grid-template-columns: 1fr 1fr; grid-template-rows: 80px 5fr 1fr; grid-template-areas: "header header" "main main" "foot foot"; } .wrapper .header { grid-area: header; } .wrapper main { grid-area: main; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 150px 1fr; grid-template-areas: "text text" "sect1 sect2" } .wrapper #sect1 { grid-area: sect1; background-color: lightcyan; } .wrapper #sect2 { grid-area: sect2; background-color: lightpink; } .foot { grid-area: foot; background-color: rgb(255, 0, 0); }
 <!DOCTYPE html> <html lang="en" dir="ltr"> <head> <meta charset="utf-8"> <title>Test</title> <link rel="stylesheet" href="main.css"> </head> <body> <div class="wrapper"> <header class="header"> <!--<img class="logo" src="imgs/logo.png" alt="logo"> --> <h1>LOGO</h1> <nav> <ul class="nav_links"> <li><a href="#">Home</a></li> <li><a href="#">Tutorials</a></li> <li><a href="#">About Us</a></li> <li><a href="#"><button class="nav_buttons">Login</button></a></li> </ul> </nav> </header> <main> <h2>TEXT HERE</h2> <div id="sect1"> <p>Section 1</p> </div> <div id="sect2"> <p>Section 2</p> </div> </main> <footer class="foot"> </footer> </div> </body> </html>

这也使您可以更好地控制主标签内的各个元素,并让您添加更多元素,而无需使用包装器中的导航栏和页脚结构。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM