【问题标题】:Transparent fixed header with flexbox带有弹性框的透明固定标题
【发布时间】:2019-07-27 11:32:18
【问题描述】:

我一直在尝试使用 flexbox 制作具有固定透明标题的页面。起初,我发现这会以某种方式导致冲突(固定定位和 flex),并且 justify-content 或 align-items 属性不适用于包装器 flex-fixed 父级的子元素。固定父级的子元素不会适当地间隔。

但后来我看到了这个https://templated.co/industrious,不知何故它起作用了! 所以我不明白为什么它不适用于我的代码。在我看来,我的做法并没有不同。

header-fixed-flex div 包装了 LOGO、NAV 和搜索 (svg) 元素,但我无法使 justify-content 或 align-items 选项适用于 header-nav 和导航 div。

    body {
        height: 2500px;
    }
    
    .header-fixed-flex {
        max-width: 150rem;
        width: 100%;
        position: fixed;
        top: 0;
        left: 0;
        z-index: 100;
        display: flex;
        justify-content: space-between;
        transform: translate(19.2rem, 0);
    }
    
    .header_nav {
        max-width: 155rem;
        display: flex;
        justify-content: space-around;
        align-items: center;
    }
    
    .header_logo {
        max-height: 9.7rem;
        background: rgba(3, 12, 77, 0.4);
    }
    
    .header_link {
        padding: 0.5rem;
    }
    
    .navigation {
        background: rgba(191, 218, 218, 0.4);
        display: flex;
    }
    
    .navigation_list {
        list-style: none;
        letter-spacing: 0.4rem;
        display: -webkit-box;
        display: -ms-flexbox;
        display: flex;
        align-items: center;
        height: 100%;
    }
    
    .navigation_item:not(:last-child) {
        margin-right: 3rem;
    }
    
    .navigation_link:link, .navigation_link:visited {
        color: #fff;
        text-decoration: none;
        padding: 0.8rem;
    }
    
    .navigation_button {
        border: none;
        background: none;
        display: flex;
        align-items: center;
    }
    
    .navigation_search-input {
        border: none;
        background: rgba(255, 255, 255, 0.1);
        outline: none;
        width: 5rem;
    }
    
    .navigation_icon {
        padding: 0.5rem;
        width: 3rem;
        fill: #fff;
    }
    
    .hero_img {
        background: url(https://twimg0-a.akamaihd.net/a/1350072692/t1/img/front_page/jp-mountain@2x.jpg) top/cover;
        height: 100vh;
    }
    <div class="header-fixed-flex">
        
        <div class="header_nav">
            <header class="header_logo">
                <a href="index.html" class="header_link">LOGO</a>
            </header>
          
            <nav class="navigation">
                <ul class="navigation_list">
                    <li class="navigation_item">
                        <a href="#" class="navigation_link">Profile</a>
                    </li>
                    <li class="navigation_item">
                        <a href="#" class="navigation_link">Services</a>
                    </li>
                    <li class="navigation_item">
                        <a href="#" class="navigation_link">Articles</a>
                    </li>
                    <li class="navigation_item">
                        <a href="#" class="navigation_link">Contact</a>
                    </li>
                </ul>
                <button class="navigation_button">
                    <input type="text" class="navigation_search-input" id="search-query"/>
                    <label for="search-query" class="navigation_search_label"></label>
                    <svg class="navigation_icon"></svg>
                </button>
            </nav>
        </div>
    </div>
    
    <section class="hero">
        <div class="hero_img"></div>
    </section>

或带有 scss 的 codepen 链接 https://codepen.io/tantoniou/pen/QoGmba

【问题讨论】:

    标签: html css flexbox fixed


    【解决方案1】:

    在没有提供设计组合或线框的情况下,很难从你的文章中确定你想要什么,但我最初的猜测是事情并没有像你预期的那样发生,因为.header-fixed-flex 只有一个孩子。所以也许在.header_nav 上设置flex: 1 或只是width: 100% 会让事情如你所愿。

    【讨论】:

    • 其实你刚刚回答了我的问题!它就在我面前!我认为 fixed-flex 父级包装了两个子元素(header 和 nav),但是 header_nav 将这些元素作为子级,因此如果它是第一个 flex 父级则可以工作!非常感谢!
    • (我删除了部分设计以使其更简单,因为我无法引用自己的图像、徽标等,但我认为代码 sn-p 和/或 codepen 可以工作,抱歉为此!)
    • 很高兴为您提供帮助。您可能希望将答案标记为解决方案。它可以帮助其他人知道您不再需要帮助,并且我可以获得美味的假网点。
    • 这是我在这里的第一个问题。在沮丧时寻求帮助意味着很多!我会确保尽我所能在这里做出贡献!
    【解决方案2】:

    移除 header-fixed-flex 元素并在 header_nav 上应用此样式

    width: 100%;
    top: 0;
    left: 0;
    position: fixed;
    z-index: 100;
    display: flex;
    justify-content: space-between;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-11-30
      • 2022-06-30
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多