html - CSS:图像和链接垂直对齐(中心)和响应图像交换

标签 html css responsive-design media-queries

我的 CSS 有几个问题。正如您在此 fiddle 中看到的那样,我希望图像完美且自动垂直对齐,恰好在中间。菜单链接也是如此。

我遇到的另一个问题是,在使用小屏幕时,我想将 Logo 图像更改为其他来源。我最好只使用媒体查询(如果可能的话)。

示例 HTML

<header>
    <nav id="menu-main" class="clearfix">
        <a id="logo-link" href="#"><img id="logo" 
    src="http://juvera.me/websites/openwork/beta/_img/logo-291x60.png" title="Open Work" alt="Open Work" /></a>

        <ul id="menu-links">
        <li class="link-active"><a class="link-active" href="/">Home</a></li>
        <li><a href="#about">About</a></li>
        <li><a href="#contact">Contact</a></li>
        </ul>
    </nav> 
</header>


<main>
  <p>Pellentesque habitant morbi tristique senectus et netus et malesuada fames ac turpis egestas. Vestibulum tortor quam, feugiat vitae, ultricies eget, tempor sit amet, ante. Donec eu libero sit amet quam egestas semper. Aenean ultricies mi vitae est. Mauris placerat eleifend leo. Quisque sit amet est et sapien ullamcorper pharetra. Vestibulum erat wisi, condimentum sed, commodo vitae, ornare sit amet, wisi. Aenean fermentum, elit eget tincidunt condimentum, eros ipsum rutrum orci, sagittis tempus lacus enim ac dui. Donec non enim in turpis pulvinar facilisis. Ut felis. Praesent dapibus, neque id cursus faucibus, tortor neque egestas augue, eu vulputate magna eros eu erat. Aliquam erat volutpat. Nam dui mi, tincidunt quis, accumsan porttitor, facilisis luctus, metus</p>
</main>

CSS

body { font-family: Century Gothic, sans-serif; margin: 0em; padding: 0em; }
header, main { display: block; margin: 0em; padding: 0em; }
header {
    background-color: #292828;

  height: 70px;
    max-height: 70px;

    /* Overlay */
    width: 100%;
    position: absolute; left:0; right:0; z-index: 999;
}
header nav {
    height: 70px;
}



/* *************************************
Image Menu
************************************* */
#logo {
    margin: auto 0em auto 10%;
    vertical-align: middle;
}
#logo-link {
    height: 70px;
    vertical-align: middle;
}


/* *************************************
Links menu
************************************* */
#menu-links {
    float: right;
    margin: auto 10% auto 0em;
}
#menu-links li {
    display: inline-block;
}
#menu-links li a {
    color: #fff;
    font-size: 0.75em;
    text-decoration: none;
    text-transform: uppercase;

    height: 70px;
    padding: 0em 1em 0em 1em;
    display: inline-block;
    vertical-align:middle;
    text-align: center;
}


main { padding-top: 70px; background-color: #cccccc; }

@media (max-width:10em) { 
/* smartphones, iPhone, portrait 480x320 phones */ 
    #logo{ src:"http://juvera.me/websites/openwork/beta/_img/logo-150x31.png"; }
    main { font-size: 1em; }
}

最佳答案

创建默认隐藏的另一个 Logo img,但在移动版本上,另一个 Logo 被隐藏,而显示移动 Logo 。此外,使用 line-height 将导航栏中的所有内容垂直居中 ( See this answer )。

在您的 CSS 中:

header,添加line-height: 70px;

#logo-link,添加position: relative;顶部:-4px;

将您的媒体查询更改为:

@media (max-width: 10em) { 
    #logo { display: none; }
    #logo-mobile { display: inline; }
    main { font-size: 1em; }
}

并添加#logo-mobile { display: none; }

在您的 HTML 中,在 #logo 旁边添加另一个 img,其 ID 为 logo-mobile,具有 src 你想要的。

关于html - CSS:图像和链接垂直对齐(中心)和响应图像交换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35810189/

相关文章:

html - 如何使用 flexbox 创建自定义表单?

javascript - OL3 中可点击的 map 覆盖?

css - ie 10 css 3d 变换表现不同

css - 弹出不坚持保存文本

html - 我的某些样式不起作用

java - 解析html代码还是使用java的正则表达式?

javascript - 带组的两列 html 表

html - 如何显示水平分数符号

javascript - 如何在响应式 div 中缩进由溢出包装引起的每一秒可视行

html - 带有两个动态元素的导航 + 第一个的边框