将子div保留在父div之内

时间:2017-07-24 18:46:08

标签: html css

好的,嗨,我觉得这是一个非常愚蠢的问题,我发现了很多像这样的问题,但没有一个答案似乎对我有用。

我的问题是有一个div(任务栏),里面有另一个div(任务栏 - 栏),我希望任务栏保持在任务栏内。我尝试将位置置于绝对和相对位置,它似乎根本不起作用,它始终位于任务栏div下面。我可以用顶部推高它,但我觉得这不是现在的方式。但我不知道,老实说,我对CSS和HTML很新,还在学习。

这是我的代码的一个方面:https://jsfiddle.net/5zghzczs/3/

.taskbar {
    width: 100%;
    height: 40px;
    box-shadow: 0px 1px 0px 0px #C2C5CA inset, 0px 2px 0px 0px #FFF inset;
    background-color: #C2C5CA;
    position: absolute;
    left: 0;
    bottom: 0;
}
#taskbar-start {
    margin-top: 4px;
    margin-bottom: 2px;
    margin-left: 2px;
    width: 90px;
    height: 33px;
    background-color: #C2C5CA;
    cursor: pointer;
}
.taskbar-start-inactive {
    box-shadow: -1px -1px 0px 0px #000 inset, 1px 1px 0px 0px #FFF inset, -2px -2px 0px 0px #868A8E inset;
}
.taskbar-start-active {
    box-shadow: -1px -1px 0px 0px #FFF inset, 1px 1px 0px 0px #000 inset, 2px 2px 0px 0px #868A8E inset;
}
.taskbar-start-frame-active {
    margin-top: 2px;
    margin-left: 2px;
    width: 84px;
    height: 27px;
    border-style: dotted;
    border-width: 1px;
    position: absolute;
}
.taskbar-start-logo {
    margin-top: 6px;
    margin-left: 3px;
    width: auto;
    height: 20px;
    -webkit-user-select: none;
}
.taskbar-start-text {
    margin-top: 10px;
    margin-left: 5px;
    display: inline;
    font-size: 12px;
    letter-spacing: -2px;
    -webkit-user-select: none;
    font-family: "Press Start 2P";
    position: absolute;
}
.taskbar-bar {
    height: 35px;
    width: 2px;
    background: green;
  margin-left: 100px;
}
<div class="taskbar">
   <div id="taskbar-start" class="taskbar-start-inactive">
            <div id="taskbar-start-frame">
                <img class="taskbar-start-logo" src="img/logo.png" /> 
                <div class="taskbar-start-text">Start</div>
            </div>
        </div>
  <div class="taskbar-bar"></div>

3 个答案:

答案 0 :(得分:1)

我认为最好的方法是让父级成为Flexbox容器。 这将把所有孩子排成一排。

display: flex; 

请参阅https://jsfiddle.net/5zghzczs/7/

在此处阅读有关flexbox的更多信息:https://css-tricks.com/snippets/css/a-guide-to-flexbox/

答案 1 :(得分:1)

你的问题是你正在使用margin-left,它试图在一个div和另一个div之间给出一个余量。 Here是一个新的JSFiddle,我将位置设置为absolute,将margin-left更改为left,并添加top: 0px;以将其设置为顶部(覆盖另一个div)。

.taskbar-bar {
  position: absolute;
  top: 4px;
  left: 100px;
    height: 35px;
    width: 2px;
    background: green;
}

答案 2 :(得分:0)

更改&#34;显示&#34; taskbar-starttaskbar-bar至&#34;内联块&#34;

.taskbar-start, .taskbar-start {
     display: inline-block;
}