CSS:border-radius //插入背景;白角

时间:2015-09-20 14:44:17

标签: html css css3

所以我对HTML / CSS完全不熟悉。我现在正在设计一个有趣的项目来学习Web开发。 我创建了一个搜索栏,想要添加带有border-radius的着名圆角。到目前为止它运作良好。问题是白色背景现在透过边缘,因为搜索栏位于菜单栏中。 我将发布截图和下面的代码。我不是100%熟悉CSS盒子模型。我想这就是问题所在。也许我可以用菜单背景图片填补空白?希望有人可以指导我在哪里解决这个问题。

截图: example

HTML代码:

<!DOCTYPE html>
<html>
    <head>
        <title>facefuck</title>
        <link rel="stylesheet" href="./css/style.css" type="text/css"/>
        <link rel="icon" href="favicon.ico" type="image/x-icon" />
    </head>
    <body>
        <div class="headerMenu">
            <div id="wrapper">
                <div class="logo">
                    <img src="./img/face_logo.jpg" />
                </div>
                <div class="search_box">
                    <form action="search.php" method="GET" id="search">
                        <input type="text" name="q" size="60" placeholder="Put your dick here" />
                    </form>
                </div>
                <div id="menu">
                    <a href="#" />Home</a>
                    <a href="#" />About</a>
                    <a href="#" />Sign Up</a>
                    <a href="#" />Sign In</a>
                </div>
            </div>
        </div>
    </body>
</html>

CSS代码:

* {
    margin: 0px;
    padding: 0px;
    font-family: Arial, Helvetica, Sans-serif; 
    font-size: 12px;
    background-color: #EAEDF5;
}
.headerMenu {
    background-image: url("../img/menu_bg.png");
    height: 60px;
    border-bottom: 0px;
    padding-left: auto;
    padding-right: auto;
    width: 100%;
}
#wrapper {
    background-image: url("../img/menu_bg.png");
    margin-left: auto;
    margin-right: auto;
    width: 1000px;
    padding-top: 0px;
    padding-bottom: 0px;
}
.logo {
    background-image: url("../img/menu_bg.png");
    width: 125px;
}
.logo img {
    width: 150px;
    height: 100%;
}
.search_box {
    position: absolute;
    top: 17px;
    margin-left: 150px;
}
#search input[type="text"] {
    background: url(../img/search_white.png) no-repeat 10px 6px #D8D8D8;
    outline: none;
    border: 0 none;
    border-radius: 100px;
    font: bold 12px Arial, Helvetica, Sans-serif;
    width:300px;
    padding: 5px 15px 5px 35px;
    text-shadow: 0 2px 2px rgba(0, 0, 0, 0.3);
    -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 3px rgba(0, 0, 0, 0.2) inset;
    -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 3px rgba(0, 0, 0, 0.2) inset;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 3px rgba(0, 0, 0, 0.2) inset;
    -webkit-transition: all 0.7s ease 0s;
    -moz-transition: all 0.7s ease 0s; 
    -o-transition: all 0.7s ease 0s;
    transition: all 0.7s ease 0s;
}
#search input[type="text"]:focus {
    background: url(../img/search_black.png) no-repeat 10px 6pc #fcfcfc;
    color: #6a6f75;
    width: 300px;
    -webkit-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(0, 0, 0, 0.9) inset;
    -moz-box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(0, 0, 0, 0.9) inset;
    box-shadow: 0 1px 0 rgba(255, 255, 255, 0.1), 0 1px 0 rgba(0, 0, 0, 0.9) inset;
    text-shadow: 0 2px 3px rgba(0, 0, 0, 0.1);
}
...

1 个答案:

答案 0 :(得分:4)

引起
* {
    background-color: #EAEDF5;
}

这会使您的.search_boxform也具有该背景颜色。您可以使用以下方法覆盖它:

.search_box, form {
    background-color: transparent;
}

我建议删除第一条规则,并仅将#EAEDF5背景颜色应用于body而不是所有元素。

用一个具体的例子来形象化:

* {
    background-color: gray;
}

#a {
    padding: 20px;
    background-color: pink;
}

#c {
    padding: 10px;
    background-color: white;
    border-radius: 20px;
}
<div id="a">
    <div id="b">
        <div id="c">
            Hello world!
        </div>
    </div>
</div>

在上面的示例中,*选择器将定位所有元素(所有div和正文),从而将每个div的背景颜色设置为灰色。具有ID ac的两个div将覆盖此背景颜色,而b则不会覆盖*选择器应使用的背景颜色,因此它''将使用灰色背景颜色而不是transparent的初始值,这将使粉红色闪耀。

要解决此问题,请强制#b div使透明背景有效,或者将* - 选择器更改为body,然后只选择背景色为页面而不是每个元素(除非被覆盖)。

请参阅我在此处推荐的修复程序:

body {
    background-color: gray;
}

#a {
    padding: 20px;
    background-color: pink;
}

#c {
    padding: 10px;
    background-color: white;
    border-radius: 20px;
}
<div id="a">
    <div id="b">
        <div id="c">
            Hello world!
        </div>
    </div>
</div>