【问题标题】:CSS3 Navigation Bar: Float:RightCSS3 导航栏:浮动:右
【发布时间】:2017-02-03 08:45:47
【问题描述】:

我正在为我们学校的科学博览会创建和设计一个迷你社交网站,但在设计阶段我已经遇到了问题。 :(

所以我创建了一些关于我的网站应该的外观的 PSD,但将我的设计转换为 HTML/CSS 似乎更难。我现在的问题是这个导航栏不配合我...

总之,这个导航栏很简单;徽标,带有标题、副标题和一些菜单选项(登录、注册)。我正在使用float:right; 将我的选项浮动到右侧,但这不是很好。

我的导航栏的选项在导航栏下方突出显示。这真的很奇怪;当我取出float:right; 时,它看起来非常好,但在左边。我真的希望它在右侧。

可通过http://ticktalk.me.pn/ 获取网站示例。注册页面的 PSD 可在此处获得:http://img1.imagilive.com/0314/tickTalk-signup.jpg

请随时“查看页面源代码”并调查我做错了什么。可以在http://ticktalk.me.pn/css/style.css 获得指向 css 的直接链接。

提前致谢。

编辑

这是我的导航栏 HTML...

<div class= "navbar-header">
    <div class= "navbar-title"><a href= "#">
        tick<span class= "bookfont">talk</span>
    </a></div>
    <div class= "navbar-subtitle">
        social networking around the clock
    </div>
    <div class= "navbar-menu">
        <div class= "navbar-option login-button">
            Login
        </div>
        <div class= "navbar-option navbar-checked signup-button">
            Sign Up
        </div>
    </div>            
</div>

这是我的 CSS:

.navbar-header {
    display:block;
    background-color: rgb(0, 241, 73);
    padding:10px;
    margin-bottom:75px;
}
.navbar-logo {
    display:inline-block;
}
.navbar-title {
    display:inline-block;
    font-size: 52px;
    margin-left:10px;
    margin-right:5px;
}
.bookfont {
    font-weight: 500;
}
.navbar-subtitle {
    display:inline-block;
    font-size: 30px;
}
.navbar-menu {
    float:right;
}
.navbar-option {
    display:inline-block;
    font-size:25px;
    padding:20px;
    padding-left:30px;
    padding-right:30px;
}
.navbar-checked {
    background-color: rgb(0, 217, 63);
}

【问题讨论】:

  • 对我来说就像一个魅力。
  • 在问题中发布您的代码。

标签: html css css-float navbar


【解决方案1】:

将具有“float:right”的元素放在该行的其余元素之前。

基本上,将&lt;div class="navbar-menu"&gt;...&lt;/div&gt; 移动到&lt;img src="logo.png" ...&gt; 之前。 或者,在已编辑问题的示例代码中,将&lt;div class="navbar-menu"&gt;...&lt;/div&gt; 移动到&lt;div class="navbar-title"&gt;...&lt;/div&gt; 之前。

我不确定这在技术上的合理性,但最好将浮点数放在非浮点数之前。 也许这是因为它假设浮动元素没有空间。

【讨论】:

  • 好吧,选项被移到了一边(耶),但现在导航栏的其余部分已经移到了右边。 :(
  • @JaredCubilla - 你用的是什么浏览器?当我对您发布的 URL 执行此操作时,它在 Chrome 中完全解决了该问题。我没有测试过其他浏览器。
  • 糟糕,抱歉,只是对您的帖子的误解。完美运行!你是救生员!
【解决方案2】:

尝试左侧的元素用另一个div包裹。比如这样:

<div class="navbar-header">
    <div class="another-div">
        <img src="logo.png" alt="logo.png" class="navbar-logo" width="47" height="47">
        <div class="navbar-title">
           <a href="#">tick<span class="bookfont">talk</span></a>
        </div>
        <div class="navbar-subtitle">
            social networking around the clock
        </div>
    </div>
    <div class="navbar-menu">
        <div class="navbar-option login-button">
            Login
        </div>
        <div class="navbar-option navbar-checked signup-button">
            Sign Up
        </div>
    </div>
</div>

然后给.another-div CSS 属性float:left,然后不要忘记为.navbar-header 设置hight

.another-div{
    float: left;
}
.navbar-header{
    height: 80px;
}

这应该可行。

【讨论】:

  • 不鼓励使用float: ...(或更多),尤其是在不需要时。它使结构复杂化,并损害网络的性能。
  • @PhistucK 请问我有这个观点的来源吗?还是您发明了一条新的 W3 规则?当涉及到一个简单的 css 属性时,如果您谈论性能,那会很有趣。 :)
  • opacity 也是一个会损害性能的简单 CSS 属性,它会创建一个新的堆栈上下文。我知道当您浏览到使用许多浮动的页面时,Chrome(或其渲染器)可能会挂起。
  • 效果很好,但我更喜欢 options 放在右边。
  • @PhistucK。好吧,对于 OP 的问题,我们是否关心opacity?请记住,float 不会以任何方式损害性能。您的观点无效。
猜你喜欢
  • 2019-03-19
  • 1970-01-01
  • 1970-01-01
  • 2014-02-27
  • 1970-01-01
  • 1970-01-01
  • 2017-05-19
  • 2018-07-19
  • 2014-07-05
相关资源
最近更新 更多