以导航为中心的响应式徽标

时间:2017-09-06 04:59:38

标签: css html5

您好我有一个水平菜单,中间有徽标,似乎无法将其内联,但到目前为止在所有浏览器中仍然看起来不错。

现在,当处于响应模式时,我希望它始终在顶部显示徽标,而按钮则在下方显示/隐藏菜单。 在响应时,它会隐藏徽标,然后在单击“显示菜单”时,它会显示ul中间带有徽标的菜单。

目前这里的代码有点凌乱。

* {
    margin: 0;
    border: 0;
    padding: 0;
}

body {

    font-family: sans-serif;
    margin: 5px;
    background: #F1F6F8;
}

a {

    font-weight: bold;
    color: #3F5767;
    text-decoration: none;
}

a:hover {
    color: #524C56;
}

#wrapper {
    max-width: 980px;
    margin: 0 auto;
}

header {
    width: 100%;
    height: 100px;
    top: 0;
    left: 0;
}

/* Logo code can go here */
ul li a.logo {
    background: url(https://i.stack.imgur.com/1dcqW.png) no-repeat center;
    height:76px;
    width:175px;
    display:block;
    padding:5px;
    margin: 0 auto;
}


nav {
    text-align: center;
}

li {
    font-family: sans-serif;
    font-size: 150%;
    display: inline-block;
    padding: 0  10px 0 10px;
}

nav ul li a {
    color: #3F5767;
}

/* Start controls checkbox change button */
ul li a:hover + .hidden, .hidden:hover{  /* Maybe remove this */
        display: block;
        width: auto;
}       

input[type=checkbox] {
        display: none;
}

input[type=checkbox]:checked ~ #menu{
        display: block;
}

.show-menu{
        font-family: sans-serif;
        font-weight: bold;
        text-decoration: none;
        color: #3F5767;
        background: #424242;
        text-align: center;
        padding: 3px o;
        display: none;
}


.thing:before {
        content: "Show Menu";
}

input[type=checkbox]:checked ~ .thing:before {
        content: "Close Menu";
}


@media screen and (max-width: 760px) {
        ul{position: static;
        display: none;
}

li{
        margin: 0 auto;
        font-size: 100%;
        padding: 0;
        /*border-bottom: 2px solid #676767;*/
}


ul li, li a{
        width: 100%;
        font-size: 15px;
}
.show-menu{
        display: block;
        width: auto;
        height: 30px;
        padding: 3px 0 0 0;
}
}
/* End controls checkbox change button */

@media print {#ghostery-purple-box {display:none !important}}
<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <meta charset="UTF-8">
        <title>Coast Fm Tasmania</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
    <header>
        <nav>

        <input id="show-menu" role="button" type="checkbox">
        <label for="show-menu" class="show-menu thing"> &nbsp </label>

        <ul id="menu">
            <li> 
            <a href="index.html" class="current">Home</a></li>
                <li><a href="#">Events</a></li>
                <li><a href="#">On-Air</a></li>
                <li><a href="#">Gallery</a></li>
                <li><a class="logo" href="index.html"></a></li> 
                <li><a href="#">Sport</a></li>
                <li><a href="#">The Team</a></li>
                <li><a href="#">Sponsors</a></li>
        </ul>
        </nav>
    </header>

</div>
</body>
</html>

此处还有Logo Coast FM

由于

3 个答案:

答案 0 :(得分:0)

您可以使用jquery并动态添加所需列表

请在此处检查代码,例如:https://jsbin.com/zusunidupo/1/edit?css,js,output 每次窗口调整大小时都需要执行下面的代码块(在提供的链接中仅在第一次加载时执行)

if ($(window).width() < 760) {
$('<li><a class="logo" href="https://i.stack.imgur.com/1dcqW.png"><img border="0" src="https://i.stack.imgur.com/1dcqW.png" width="50" height="50"></a></li>').insertAfter($('li:eq(4)'))
}
else {
$("#menu").prepend('<li><a class="logo" href="https://i.stack.imgur.com/1dcqW.png"><img border="0" src="https://i.stack.imgur.com/1dcqW.png" width="50" height="50"></a></li>');
}

答案 1 :(得分:0)

嘿,我认为你的HTML代码很多改变只是建议改进

&#13;
&#13;
* {
    margin: 0;
    border: 0;
    padding: 0;
}

body {

    font-family: sans-serif;
    margin: 5px;
    background: #F1F6F8;
}

a {

    font-weight: bold;
    color: #3F5767;
    text-decoration: none;
}

a:hover {
    color: #524C56;
}

#wrapper {
    max-width: 980px;
    margin: 0 auto;
}

header {
    width: 100%;
    height: 100px;
    top: 0;
    left: 0;
}

/* Logo code can go here */
ul li a.logo {
    background: url(https://i.stack.imgur.com/1dcqW.png) no-repeat center;
    height:76px;
    width:175px;
    display:block;
    padding:5px;
    margin: 0 auto;
}

.logo {
    background: url(https://i.stack.imgur.com/1dcqW.png) no-repeat center;
    height:76px;
    width:175px;
    display:block;
    padding:5px;
    margin: 0 auto;
}

nav {
    text-align: center;
}

li {
    font-family: sans-serif;
    font-size: 150%;
    display: inline-block;
    padding: 0  10px 0 10px;
}

nav ul li a {
    color: #3F5767;
}

/* Start controls checkbox change button */
ul li a:hover + .hidden, .hidden:hover{  /* Maybe remove this */
        display: block;
        width: auto;
}       

input[type=checkbox] {
        display: none;
}

input[type=checkbox]:checked ~ #menu{
        display: block;
}

.show-menu{
        font-family: sans-serif;
        font-weight: bold;
        text-decoration: none;
        color: #3F5767;
        background: #424242;
        text-align: center;
        padding: 3px o;
        display: none;
}


.thing:before {
        content: "Show Menu";
}

input[type=checkbox]:checked ~ .thing:before {
        content: "Close Menu";
}


@media screen and (max-width: 760px) {
ul{position: static;
        display: none;
}
ul li a.logo { display: none; } 

li{
        margin: 0 auto;
        font-size: 100%;
        padding: 0;
        /*border-bottom: 2px solid #676767;*/
}


ul li, li a{
        width: 100%;
        font-size: 15px;
}
.show-menu{
        display: block;
        width: auto;
        height: 30px;
        padding: 3px 0 0 0;
}
}
/* End controls checkbox change button */

@media print {#ghostery-purple-box {display:none !important}}
&#13;
<!DOCTYPE html>
<html lang="en"><head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
        <meta charset="UTF-8">
        <title>Coast Fm Tasmania</title>
        <meta name="viewport" content="width=device-width, initial-scale=1.0">
</head>
<body>
<div id="wrapper">
    <header>
        <nav>

        <input id="show-menu" role="button" type="checkbox">
        <label for="show-menu" class="show-menu thing">  <a class="logo" href="index.html"></a>  &nbsp </label>
       

        <ul id="menu">
            <li> 
            <a href="index.html" class="current">Home</a></li>
                <li><a href="#">Events</a></li>
                <li><a href="#">On-Air</a></li>
                <li><a href="#">Gallery</a></li>
                <li><a class="logo" href="index.html"></a></li> 
                <li><a href="#">Sport</a></li>
                <li><a href="#">The Team</a></li>
                <li><a href="#">Sponsors</a></li>
        </ul>
        </nav>
    </header>

</div>
</body>
</html>
&#13;
&#13;
&#13;

答案 2 :(得分:0)

您可以在div中添加另一个徽标,这将是您的隐藏徽标&#34;。

<input id="show-menu" role="button" type="checkbox">
<div class="hidden">
 <a class="hidden-logo" href="index.html"></a>
 <label for="show-menu" class="show-menu thing"> &nbsp </label>
</div>

然后您可以随时显示并隐藏它。

.hidden {
    display:flex;
    justify-content: center;
    background: #424242;
    display:none;
}
@media screen and (max-width: 760px) {
    .hidden {
        display:flex;
    }
}
.hidden-logo {
    background: url(https://i.stack.imgur.com/1dcqW.png) no-repeat center;
    height:23px;
    background-size:50%;
    width:175px;
    display:block;
    padding:5px;
}

这是一个例子

https://jsfiddle.net/jrdkp7ph/2/