我在设计响应式标头时遇到了一些问题

Jac*_*ack 15 css css3 twitter-bootstrap twitter-bootstrap-3

我正在设计一个标题,并对我遇到的问题有几个问题.

演示是在这里和代码如下,任何帮助将不胜感激.

.menu {
  position: relative;
  width: 100%;
  height: 66px;
  max-height: 90px;
  background: green;
}
.menu img {
  max-height: 30px;
}
.menu ul {
  left: 0;
  margin: 0 auto;
  width: 80%;
  margin: -30px auto 0 auto;
  font-size: 16px;
  font-weight: bold;
  max-width: 1200px;
}
.menu ul li:first-child {
  border-left: 1px solid gray;
}
.menu ul li {
  //
  width: 140px;
  width: 14%;
  display: block;
  float: left;
  text-align: center;
  border-right: 1px solid gray;
  color: white;
  height: 50px;
  line-height: 70px;
  vertical-align: bottom;
}
.menu ul li a {
  color: white;
}
.menubtn {
  width: 30px;
  height: 30px; //
  opacity: 0.5;
  cursor: pointer;
}
.menubtn .fa {
  font-size: 26px;
  color: rgb(75, 0, 130)
}
#menubtn {
  position: absolute;
  top: 2px;
  left: 4px;
}
@media only screen and (min-width: 501px) {
  .topbar {
    display: none;
  }
  .menu ul li a {
    font-size: 14px;
  }
  #mybody {
    margin-top: 8%;
  }
}
@media only screen and (max-width: 1200px) {
  .menu ul li a {
    font-size: 12px;
  }
}
@media only screen and (max-width: 888px) {
  .menu ul li a {
    font-size: 12px;
  }
}
@media only screen and (max-width: 685px) {
  .menu {
    height: 40px;
  }
  .menu ul {
    margin: 0;
  }
  .menu img {
    display: none
  }
  .menu ul {
    width: 100%;
  }
  .menu ul li {
    line-height: 40px;
    height: 40px;
    font-size: 13px;
  }
}
@media (max-height: 480px) and (min-width: 480px) and (max-width: 600px) {
  .menu {
    display: none;
  }
}
@media only screen and (min-width: 320px) and (max-width: 480px) and (orientation: landscape) {
  .menu {
    display: none;
  }
}
Run Code Online (Sandbox Code Playgroud)
<!DOCTYPE html>
<html lang="en">

<head>
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/css/bootstrap.min.css">
  <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
  <script src="http://maxcdn.bootstrapcdn.com/bootstrap/3.2.0/js/bootstrap.min.js"></script>
  <link rel="stylesheet" href="http://maxcdn.bootstrapcdn.com/font-awesome/4.3.0/css/font-awesome.min.css">
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-social/4.2.1/bootstrap-social.css">
</head>

<body>



  <header>
    <div class="container-fluid">
      <div class="row" style="background-color: lightblue;">
        <div class="col-md-8 col-sm-8 col-xs-1">
          <div id="banner" style="margin-left: 59%;">
            <img height="25px" width="25px" src="https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcRROdI3yg-dOO1Wl56Ci6AHheWnzUA6j01oJDvxaUNViODWLpLX" />
            <img height="40px;" width="253px;" src="http://staticx.ibncollege.com/wcsstore/ExtendedSitesCatalogAssetStore/907_90722_1_21939/images/FULLIMAGE_88753.jpg" />

          </div>
        </div>
        <div class="col-md-2">
          <div id="images" style="float: right;">
            <a class="btn btn-social-icon btn-sm btn-facebook" style="text-align: center;" href="#"> <i class="fa fa-facebook"></i>
            </a>
            <a class="btn btn-social-icon btn-sm btn-twitter" href="#"> <i class="fa fa-twitter"></i>
            </a>
            <a class="btn btn-social-icon btn-sm btn-google-plus" href="#">
              <i class="fa fa-google-plus"></i>
            </a>
          </div>
        </div>

        <div class="container">
          <div class="row">

            <div class="col-md-12 col-sm-12 col-xs-12 search-container">

              <form id="searchbox" role="form" action="#" method="GET">
                <div class="col-md-4 col-sm-12 col-xs-12 searchbox">
                  <div class="ui-widget">
                    <input id="Name" name="name" class="form-control searchinput" type="text" placeholder="name" value="">
                  </div>
                </div>
                <div class="col-md-4 col-sm-12 col-xs-12">
                  <input id="family" name="family" class="form-control searchinput" type="text" placeholder="family" value="">
                </div>
                <div class="col-md-2 col-sm-2 col-xs-1">
                  <button style="background-color: blue; border-radius: 14px; border-style: solid;" class="btn-search" type="submit" title="Search">
                    <div style="background-color: blue;">
                      <span class="glyphicon glyphicon-search"></span>

                    </div>
                  </button>

                </div>

              </form>
              <div style="float: right; text-align: right;" class="col-md">
                <a href="#">Click1</a>  <a href="#">Click2</a>
              </div>
            </div>
          </div>
        </div>
        <div class="hidden-xs">
          <div class="menu">
            <img src="https://encrypted-tbn1.gstatic.com/images?q=tbn:ANd9GcTnYmtXUnZ6g5TwfPndnVQMcVdJO8qkSJqm-dPkNRJ_13IaeTP6Pw" style="width: 100%; max-height: 40px;">
            <ul id="idmenu">
              <li><a href="#">Item1</a>
              </li>
              <li><a href="#">Item2</a>
              </li>
              <li><a href="#">Item3</a>
              </li>
              <li><a href="#">Item4</a>
              </li>
              <li><a href="#">Item5</a>
              </li>
              <li><a href="#">Item6</a>
              </li>
              <li><a href="#">Item7</a>
              </li>
              <li><a href="#">Item8</a>
              </li>
            </ul>

          </div>
        </div>
      </div>
    </div>
  </header>
</body>

</html>
Run Code Online (Sandbox Code Playgroud)

我希望它的方式如下:

在此输入图像描述

如您所见,我在搜索框的右侧有一个徽标,即从页面顶部到搜索框底部.

中间的横幅,三个社交媒体链接和两个链接,位于社交媒体链接的略微右下方.

我还在菜单顶部有一个白色图像,将替换为正确的图像.

(我不是nav因为应该在菜单顶部的图像创建菜单;因此,我也有移动尺寸屏幕的问题,因此需要手动执行,有助于设计导航也将受到赞赏)

我被要求缩小要求,

  • 我需要将徽标放在屏幕截图中显示的位置,而不是它的位置(现在位于横幅的左侧 - 请点击'demo is here'链接查看).

  • 还需要为移动屏幕创建一个汉堡包式菜单,因为我不使用导航很难实现.如果您知道如何使用导航来解决问题我会很感激,因为您可以看到当前菜单不是基于导航.

我需要它做出回应,所以如果你做出任何改变,我将不胜感激,如果你能考虑到这一点.

Dar*_*nen 8

首先,对于移动设备上的汉堡包菜单,我强烈推荐FlexNav.

现在,你要做的大部分工作都可以通过添加一些额外的div来实现,我将解释:

响应式设计的整个想法是物品堆叠在一起,当你到达某个点(断点)时,它们会漂浮在其他元素旁边.

在此输入图像描述

上面的例子显示了如果所有容器都是float: left;在宽屏断点处制作会发生什么.

要在其他元素旁边浮动的所有元素都需要位于同一个容器中.在您的情况下,这意味着一个容器应该包含您的徽标,下一个容器应该有您的横幅,输入字段和搜索框,最后一个容器应该有您的社交链接.或者,如果您想要移动设备顶部附近的社交链接,您可以使用float: right;而不是float: left;将它们放在较早的容器中.

要使表单元素彼此相邻,它们将需要width50%或更少.响应主题的百分比非常有效.

最后,如果您计划进行大量的响应式主题,那么有些工具可能比设置和学习有点挑战,但是使整个过程更加顺畅,例如:


Alv*_*dez 6

好吧,正如我一直说的那样,当你想要将你的设计翻译成网络时,不要使用boostrap,它会更快,更容易,也更简洁.Bootstrap是一种在Twitter自己的设计下制作快速响应网络的工具.它很好,但不是奇迹.如果你想在你需要知道css的网上自己设计,无论是修改引导程序还是从头开始(如果你知道css那么你就不会使用bootstrap太多了).

我将从头开始.

在没有添加主要元素的情况下,在开始使用html布局时会更容易:

<header>
    <div class="container-menu-top">        
        <div class="menu-top">
            <div class="menu-top-center">
                <div class="icons-left">
                </div>
                <div class="container-login">
                    <div class="logo">
                    </div>
                    <div class="login">
                    </div>
                </div>
            </div>
            <div class="menu-top-right">
                <div class="social">
                </div>
                <div class="links">
                </div>
            </div>
        </div>
    </div>
    <div class="container-menu-bot">
        <div class="menu-bot">
        </div>
    </div>
</header>
Run Code Online (Sandbox Code Playgroud)

然后你添加css来正确定位布局(如果你使用颜色更容易检查一切正常,那就更好了):

body {margin:0; padding:0;}
* {
  -webkit-box-sizing: border-box;
  -moz-box-sizing: border-box;
  box-sizing: border-box;
}
.container-menu-top {
    width:100%;
    background-color: aqua;
    height:160px;
}
.container-menu-bot {
    width:100%;
    background-color: aqua;
    height:60px;
    margin-top:40px;
}
.menu-top, .menu-bot {
    max-width:970px;
    width:100%;
    height:100%;
    background-color: green; 
    margin:0 auto;
    text-align:center;
    position:relative;
}
.menu-top-center {
    display:inline-block;
    background-color: red; 
    width:50%;
    height:100%;    
}
.menu-top-right {
    display:inline-block;
    float:right;    
    height:100%;
    background-color: violet; 
    width:150px; 
}
.icons-left {
    width:10%;
    float:left; 
    background-color: blue;
    height:100%;
}
.container-login {
    width:90%;
    float:left; 
    background-color: brown; 
    height:100%;
    text-align:left;
}
.logo {
    height:20%;
    background-color: orange;    
}
.login {
    height:80%;
    background-color: yellow;    
}
@media only screen and (max-width: 600px) {
    .menu-top-center {width: calc(100% - 150px);}
}
Run Code Online (Sandbox Code Playgroud)

正如你在这个正在进行的FIDDLE中所看到的,一切都是有意义的,并且响应只是添加一行media queries.社交面板不会改变它的宽度所以在600px(你可以设置你的愿望中断宽度)宽度,我已经改变了将menú-top-center让所有的父母宽度,但社会的容器.请注意,请将主要容器设为最大宽度为970px(如示例所示)

另外,我设置了一些高度只是为了能够检查布局,稍后我将删除许多属性,因为内容将设置正确的高度.

现在是时候将元素放在他们的html容器中了.

登录左侧的图标,以html和css的形式添加图像.对于它们,它们在容器上响应,因此当你调整窗口大小时,里面的图像会改变它们的宽度.如果你想要一个固定的尺寸,那么再次给容器一个宽度pxcontainer-login一个宽度width:calc(100% - yourwidthpx);:

.icons-left img {
    width:100%;
    display:block;
    padding:5px;
}
Run Code Online (Sandbox Code Playgroud)

html中的"徽标"图像,带有您想要的大小(现在删除其父级的高度):

.logo img {
    height:40px;
    width:253px;
    max-width:90%;
    display:inline-block;
}
Run Code Online (Sandbox Code Playgroud)

inputs在登录div中登录(现在删除其父级的高度)和媒体查询以使其重新定位:

.login input, .login button {
    display:inline-block;
}
.login input {width:35%;}
@media only screen and (max-width: 600px) {
    .login input {width:100%;}
}
Run Code Online (Sandbox Code Playgroud)

您的社交图标(我建议您将它们作为html中的列表插入):

.social {}
.social ul {list-style:none;margin:0;}
.social li {
    height:30px;
    width:30px;
    float:right;
    background-color: blue;
    margin-left:4px; 
    margin-top:4px;
    background-repeat:no-repeat;
    background-size:cover;
}
.social1 {background-image: url(http://the-route-to-your-image.com);}
.social2 {background-image: url(http://the-route-to-your-image.com);}
.social3 {background-image: url(http://the-route-to-your-image.com);}
Run Code Online (Sandbox Code Playgroud)

你的链接:

.links {
    clear:both;
    text-align:left;
    margin-top:4px;
}
.links a {
    display:inline-block;    
}
Run Code Online (Sandbox Code Playgroud)

然后删除高度和背景颜色,就是这样:FIDDLE

当然还有一些事情要做你的项目风格,毕竟这是布局,我会为你留下一些工作:)

如果我今晚晚些时候有空,我可以完成你的菜单,尝试用"汉堡"图标解释如何使其重新定位.

相信我,所有这一切都更容易和更快棕褐色覆盖和修改你的引导,使它看起来你想要的.

编辑("burger"menú):

现在让我们做主要的menú(根据你的形象).html很简单:

<div class="container-menu-bot">
        <div class="menu-bot">            
            <ul id="">
                <li><a href="#">Item1</a></li>
                <li><a href="#">Item2</a></li>
                <li><a href="#">Item3</a></li>
                <li><a href="#">Item4</a></li>
                <li><a href="#">Item5</a></li>
                <li><a href="#">Item6</a></li>
                <li><a href="#">Item7</a></li>
                <li><a href="#">Item8</a></li>
            </ul>
            <div class="burger"></div>
        </div>
</div>
Run Code Online (Sandbox Code Playgroud)

burger图标在哪里?我们给position:absolute这个容器,我们隐藏它使用display:none.然后使用mediaqueries,我们在隐藏列表时显示图标.我们还需要更改li’sfrom display:inline-blockdisplay:block最后设置一个min-height到主容器,这样当隐藏列表时你仍然有"绿色"menúnavn:

.menu-bot {position:relative;}
.menu-bot a {color:#fff;}
.menu-bot ul {list-style:none; margin:0;}
.menu-bot li {
    display:inline-block;
    padding:10px 20px;
    border-left:1px solid #fff;
}
.menu-bot li:last-child {
    border-right:1px solid #fff;
}
.burger {
    width:25px;
    height:25px;
    background-color: red;
    position:absolute;
    top:7px;
    right:7px;
    display:none;
}
@media only screen and (max-width: 720px) {
    .burger {display:block;}
    .menu-bot ul {display:none;}
    .menu-bot li {display:block; border:0;}
}
Run Code Online (Sandbox Code Playgroud)

我们还添加了最后一堂课:

.menu-bot .visible {display:block;}
Run Code Online (Sandbox Code Playgroud)

visible只需点击汉堡图标即可更改列表的显示.为此你只需要一个非常简单的jquery代码:

$(document).ready(function () {
            $('.burger').click(function () {
                $('.menu-bot ul').toggleClass("visible"); 
            });
        });
Run Code Online (Sandbox Code Playgroud)

这可以通过css和使用悬停点击进行,但我发现点击事件更好,未来的用户可能会有更好的体验,就是这样.非常简单,易于理解,只需几行CSS.

最终的FIDDLE.祝你的项目好运