2015-04-22 16 views
15

Tôi đang thiết kế tiêu đề và có một vài câu hỏi về các vấn đề tôi có.Tôi gặp một số vấn đề khi thiết kế tiêu đề đáp ứng

demo is here và mã bên dưới, mọi trợ giúp sẽ được đánh giá cao.

.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; 
 
    } 
 
}
<!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>

Con đường tôi muốn nó được là như sau:

enter image description here

Như bạn có thể thấy tôi có một logo ở phía bên phải của hộp tìm kiếm, đó là từ đầu trang đến cuối hộp tìm kiếm.

Biểu ngữ ở giữa, ba liên kết truyền thông xã hội và hai liên kết được đặt ở phía dưới bên phải của các liên kết truyền thông xã hội.

Tôi cũng có một hình ảnh màu trắng ở đầu trình đơn sẽ được thay thế bằng hình ảnh phù hợp.

(Tôi không tạo menu bằng cách sử dụng nav vì hình ảnh đó phải ở trên cùng của menu; vì vậy, tôi cũng gặp vấn đề với màn hình kích thước di động, do đó, hãy giúp thiết kế nav cũng sẽ được đánh giá)

tôi đã được yêu cầu thu hẹp yêu cầu,

  • tôi cần phải đặt logo ở vị trí đó được thể hiện trong ảnh chụp màn hình, chứ không phải nó ở đâu, (nó hiện đang ở phía bên trái của biểu ngữ - vui lòng nhấp vào liên kết 'demo là đây' để xem).

  • Cũng cần tạo trình đơn kiểu bánh hamburger cho màn hình thiết bị di động, vì tôi không sử dụng điều hướng, rất khó đạt được. Nếu bạn biết làm thế nào để giải quyết vấn đề với nav tôi sẽ đánh giá cao nó, vì bạn có thể thấy menu hiện tại không dựa trên nav.

Tôi cần phản hồi, vì vậy nếu bạn thực hiện bất kỳ thay đổi nào, tôi sẽ biết ơn nếu bạn có thể xem xét điều đó.

+0

bạn thực sự muốn gì?một tiêu đề đáp ứng hay cái gì khác? cụ thể là –

+1

@TanyaSinha thực sự tôi cần thiết kế đáp ứng giống như ảnh chụp màn hình. Tôi đã làm một số phần của nó nhưng có một vài vấn đề như bạn có thể thấy nó không giống như ảnh chụp màn hình được nêu ra. Lý do mà tôi đề cập đến vấn đề của tôi với màn hình điện thoại di động là dành cho những người sẽ đề nghị tôi sử dụng nav để biết lý do mà tôi đã không sử dụng nav. Vì vậy, nếu ai đó có một đề nghị tốt hơn tôi sẽ áp dụng. – Jack

+1

Yếu tố cụ thể nào không phù hợp với những gì bạn đang làm và bạn đã thử những gì? Bạn không có bất kỳ câu hỏi thực tế nào được nêu ra, chỉ cần báo cáo và một bãi chứa những gì bạn có cho đến nay. Vui lòng thu hẹp nó xuống các câu hỏi cụ thể. –

Trả lời

6

Vâng, như tôi luôn nói tôi t nhanh hơn, dễ dàng hơn và đặc biệt hơn, KHÔNG sử dụng công cụ tăng cường khi bạn muốn dịch thiết kế của mình sang web. Bootstrap là một công cụ để tạo các trang web đáp ứng nhanh theo thiết kế của Twitter. Nó tốt nhưng KHÔNG kỳ diệu. NẾU bạn muốn thiết kế của riêng bạn trên web bạn CẦN biết css, bất cứ điều gì để sửa đổi bootstrap hoặc làm điều đó từ đầu (và nếu bạn biết css thì bạn sẽ không sử dụng bootstrap quá nhiều).

Tôi sẽ bắt đầu từ đầu.

Sẽ dễ dàng hơn khi bạn bắt đầu với layout html của bạn mà không, tuy nhiên, thêm các yếu tố chính:

<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> 

Và sau đó bạn thêm css của vị trí bố trí một cách chính xác (và tốt hơn nếu bạn sử dụng màu sắc để làm cho nó dễ dàng hơn để kiểm tra tất cả mọi thứ là ok):

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);} 
} 

Như bạn có thể thấy trong FIDDLE này cơ bản dở dang, tất cả mọi thứ có ý nghĩa, và đáp ứng chỉ cần thêm một dòng duy nhất của media queries bảng .Công xã hội sẽ không thay đổi chiều rộng của nó như vậy tại 600px (bạn có thể thiết lập chiều rộng chiều rộng mong muốn của bạn), tôi đã thay đổi menú-top-center để có được tất cả chiều rộng của phụ huynh nhưng vùng chứa xã hội. Lưu ý, tôi cũng đã tạo vùng chứa chính có chiều rộng là 970px (như trong ví dụ của bạn)

Ngoài ra, tôi đã thiết lập một số chiều cao để có thể kiểm tra bố cục, sau này tôi sẽ xóa nhiều thuộc tính vì nội dung sẽ đặt chiều cao phù hợp.

Bây giờ là lúc để đặt các phần tử bên trong các vùng chứa html của chúng.

Biểu tượng ở bên trái thông tin đăng nhập của bạn thêm hình ảnh tại html và dưới dạng css. Đúng atm họ đang trên một container đáp ứng để hình ảnh bên trong sẽ thay đổi chiều rộng của họ khi bạn thay đổi kích thước cửa sổ.Nếu bạn muốn có một kích thước cố định sau đó cung cấp cho container có chiều rộng trên px và đến container-login chiều rộng với, một lần nữa width:calc(100% - yourwidthpx);:

.icons-left img { 
    width:100%; 
    display:block; 
    padding:5px; 
} 

“logo” của bạn hình ảnh trong html với kích thước mong muốn của bạn (loại bỏ bây giờ là chiều cao của cha mẹ mình):

.logo img { 
    height:40px; 
    width:253px; 
    max-width:90%; 
    display:inline-block; 
} 

đăng nhập của bạn inputs bên đăng nhập div (loại bỏ bây giờ là chiều cao của cha mẹ mình) và mediaquery để làm cho nó resposnive:

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

biểu tượng xã hội của bạn (tôi khuyên bạn để chèn chúng như một danh sách trong 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);} 

Liên kết của bạn:

.links { 
    clear:both; 
    text-align:left; 
    margin-top:4px; 
} 
.links a { 
    display:inline-block;  
} 

Sau đó, loại bỏ cao và background-màu sắc và đó là nó: FIDDLE

Tất nhiên vẫn còn những việc cần làm để tạo kiểu cho dự án của bạn, sau khi tất cả điều này là bố cục, tôi sẽ để lại một số công việc cho bạn :)

Nếu tôi có thời gian tối nay, tôi có thể hoàn thành trình đơn của bạn đang cố gắng giải thích cách làm cho biểu tượng này phản ứng với biểu tượng “bánh mì kẹp thịt”.

Tin tưởng tôi, Tất cả điều này là MUCH dễ dàng hơn và nhanh hơn, ghi đè và sửa đổi bootstrap của bạn để làm cho nó trông như bạn muốn.

Edited (“hamburger” menu):

Bây giờ chúng ta hãy làm menu chính (dựa trên hình ảnh của bạn). Html rất dễ dàng:

<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> 

Trường hợp burger là biểu tượng. Chúng tôi cung cấp position:absolute cho vùng chứa này và chúng tôi ẩn nó bằng cách sử dụng display:none. Sau đó, với mediaqueries chúng tôi hiển thị biểu tượng trong khi ẩn danh sách của chúng tôi. Chúng tôi cũng cần phải thay đổi li’sdisplay:inline-block-display:block và cuối cùng là thiết lập một min-height cho container chính như vậy trong khi danh sách được giấu bạn vẫn có “xanh” Menu nav:

.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;} 
} 

Chúng tôi cũng thêm cuối cùng của chúng tôi lớp:

.menu-bot .visible {display:block;} 

visible sẽ chỉ thay đổi hiển thị danh sách của bạn một khi bạn nhấp vào biểu tượng bánh burger. Cho rằng bạn chỉ cần một mã jquery rất đơn giản:

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

Điều này có thể được thực hiện chỉ với css và sử dụng di chuột insteed nhấp chuột, nhưng tôi thấy nó tốt hơn nhiều sự kiện click chuột bạn sẽ sử dụng trong tương lai có thể sẽ có một tốt hơn kinh nghiệm Và đó là nó. Khá đơn giản, dễ hiểu và chỉ là một vài dòng css.

Cuối cùng FIDDLE. Chúc bạn may mắn với dự án

+0

Rất cám ơn, làm thế nào để có đường ngang trên biểu tượng bánh burger chứ không phải là màu nền đỏ? Ngoài ra, các liên kết truyền thông xã hội không hoạt động. làm thế nào để làm cho chúng hoạt động? – Jack

+0

Vâng. Hình vuông màu đỏ cho biểu tượng "bánh mì kẹp thịt" được đặt chỉ để bạn có thể đặt bên trong một hình ảnh (với hình nền) sau đó chỉ cần xóa màu. Tương tự với các biểu tượng xã hội hình vuông màu xanh lam. Bên trong danh sách các biểu tượng xã hội có các thẻ '' chỉ với một 'href'.Chỉ cần nhập bất kỳ url nào bạn muốn trong href và nó sẽ hoạt động. –

8

Để bắt đầu, cho menu kiểu bánh hamburger trên thiết bị di động, tôi khuyên bạn nên FlexNav.

Bây giờ, hầu hết những gì bạn đang cố gắng làm có thể được thực hiện bằng cách thêm một số divs thêm, tôi sẽ giải thích:

Toàn bộ ý tưởng của một responsive design là mặt hàng được xếp chồng lên nhau, và khi bạn đến một điểm nhất định (breakpoint), chúng sẽ nổi lên để ngồi bên cạnh các yếu tố khác.

enter image description here

Ví dụ trên cho thấy những gì sẽ xảy ra nếu tất cả các container đã được thực hiện float: left; tại breakpoint màn ảnh rộng.

Tất cả các yếu tố mà bạn muốn nổi bên cạnh các yếu tố khác cần nằm trong cùng một vùng chứa. Trong trường hợp của bạn có nghĩa là một vùng chứa phải có biểu tượng của bạn trong đó, vùng chứa tiếp theo phải có biểu ngữ, trường nhập và hộp tìm kiếm của bạn và vùng chứa cuối cùng phải có liên kết xã hội của bạn.Hoặc nếu bạn muốn các liên kết xã hội ở gần trên cùng trên thiết bị di động, bạn có thể sử dụng float: right; thay vì float: left; và đặt chúng trong vùng chứa trước đó.

Để các phần tử biểu mẫu của bạn cạnh nhau, chúng sẽ cần width từ 50% trở xuống. Tỷ lệ phần trăm hoạt động rất tốt cho việc đáp ứng.

Cuối cùng, nếu bạn đang lập kế hoạch để làm rất nhiều theming đáp ứng có các công cụ hiện có hơn có thể là một chút khó khăn để thiết lập và học hỏi, nhưng làm cho toàn bộ quá trình NHIÊU mượt mà như:

+1

Ngoài các điểm @Darvanen được thực hiện, việc xem xét sử dụng khung đáp ứng như Foundation (http://foundation.zurb.com/) hoặc bootstrap (http://getbootstrap.com/) có thể giúp bạn dễ dàng hơn. Ngay cả khi nó chỉ là để xem cách họ xây dựng các thành phần đáp ứng của họ. – Antfish

Các vấn đề liên quan