【问题标题】:Materialize framework: responsive logo in navbarMaterialise 框架:导航栏中的响应式徽标
【发布时间】:2016-01-31 08:59:11
【问题描述】:

我正在物化框架中创建一个网站。我对导航栏中的徽标有疑问。所以我的标志非常大(6202x3800 像素),我没有任何其他版本。我想把这个标志放在导航栏中,但它总是超出nav-wrapper 的框架。我尝试添加类responsive-img,但它根本不起作用。

这是我的代码:

#allcontent {
  background-color: white;
  margin: 2%;
}
body {
  background: #d26335;
}
nav {
  color: black;
}
<div class="row" id="allcontent">
  <div class="navbar-default" id="navbar">
    <nav class="white">
      <div class="nav-wrapper">
        <a href="index.html" class="brand-logo left"><img class="responsive-img" id="logo" src="<!-- my image -->"/></a>
        <ul id="nav-mobile" class="right hide-on-med-and-down">
          <li><a href="sass.html"><i class="material-icons">search</i></a>
          </li>
          <li>colors</li>
        </ul>
      </div>

    </nav>
  </div>
</div>

【问题讨论】:

    标签: css material-design materialize


    【解决方案1】:

    您所要做的就是使用 CSS 将图像的大小控制为您想要的任何尺寸:

    .navbar-material .nav-wrapper .brand-logo img {
        height: 64px;
    }
    

    或者使用图像编辑器将图像大小调整为更合理的徽标开始使用。请参阅 PhotoshopGIMPSketch 等等。

    (*并且绝对压缩图像;如果您不使用构建系统来执行此操作,总会有类似TINYpng)

    查看工作示例片段。

    (**注意所有使用的类都是默认的 MaterialCSS 减去 .navbar-material 类,看起来你正在将 Bootstrap3 类与 MaterialCSS 类混合)

    $(".button-collapse").sideNav();
    body {
      background: #d26335;
    }
    nav.navbar-material {
      background: #d26335;
      border: none;
      box-shadow: none;
    }
    .navbar-material .nav-wrapper {
      background: white;
      margin: 20px;
    }
    .navbar-material .nav-wrapper > ul > li > a {
      color: black;
    }
    .navbar-material .nav-wrapper .brand-logo img {
      height: 64px;
    }
    .navbar-material .nav-wrapper .button-collapse i {
      color: black;
    }
    @media (max-width: 600px) {
      .navbar-material .nav-wrapper .brand-logo img {
        height: 56px;
      }
    }
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
    <script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.1/js/materialize.min.js"></script>
    <link href="https://cdnjs.cloudflare.com/ajax/libs/materialize/0.97.1/css/materialize.min.css" rel="stylesheet" />
    <link href="https://fonts.googleapis.com/icon?family=Material+Icons" rel="stylesheet">
    <nav class="navbar-material">
      <div class="nav-wrapper">
        <a href="#!" class="brand-logo">
          <img src="http://placehold.it/6202x3800/FF001E/fff">
        </a>
        <a href="#" data-activates="mobile-demo" class="button-collapse"><i class="material-icons">menu</i></a>
    
        <ul class="right hide-on-med-and-down">
          <li><a href="sass.html">Sass</a>
    
          </li>
          <li><a href="badges.html">Components</a>
    
          </li>
          <li><a href="collapsible.html">Javascript</a>
    
          </li>
          <li><a href="mobile.html">Mobile</a>
    
          </li>
        </ul>
        <ul class="side-nav" id="mobile-demo">
          <li><a href="sass.html">Sass</a>
    
          </li>
          <li><a href="badges.html">Components</a>
    
          </li>
          <li><a href="collapsible.html">Javascript</a>
    
          </li>
          <li><a href="mobile.html">Mobile</a>
    
          </li>
        </ul>
      </div>
    </nav>

    【讨论】:

    • 它工作正常 :D 非常感谢,我很感激。 ;)
    • 没问题,如果解决方案有效,不要忘记将您的问题标记为已回答,以便其他人可以从中受益。
    • 很好的答案!但我不明白为什么要为@media 指定徽标的大小(最大宽度:600 像素)。这不是材料的工作吗,这是材料吗?
    • 这个问题与MaterializeCSS有关。如果检查 DevTools 中的计算输出,则导航的高度默认从 64px 变为 56px @ 低于 600px。据我所知,导航栏(特别是 brand-logo 类)不考虑图像,只考虑文本,所以这就是为什么必须将尺寸应用于图像的原因,特别是考虑到问题是 6202x3800 像素。希望对您有所帮助。
    猜你喜欢
    • 1970-01-01
    • 2015-11-04
    • 1970-01-01
    • 2017-12-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-04-22
    相关资源
    最近更新 更多