【问题标题】:Text not appearing in list element blocks文本未出现在列表元素块中
【发布时间】:2018-02-13 10:44:50
【问题描述】:

我目前正在做一项作业,但我无法弄清楚为什么橙色容器列表中的文本不在橙色框中。这些盒子位于我希望它们所处的位置,但我不明白为什么这些字母位于完全不同的空间中。与元素关联的文本不应该与元素一起移动吗?我的意思是,为什么粉红色的盒子可以,但橙色的盒子不行。感谢您的帮助!

This is what my issue looks like

 main {
  margin: 0 auto;
  width: 400px;
}
.clearfix::after {
  content: "";
  clear: both;
  display: block;
}
.blue-container {
  height: 100px;
  width: 400px;
  position: relative;
}
.top {
  background-color: #141f40;
  height: 100px;
  width: 400px;
  float: right;
  
}
.white-container {
  background-color: white;
  height: 60px;
  width: 160px;
  position: absolute;
  top: 20px;
  left:220px;
}
.white-container>li{
  background-color: #a9004b;
  height: 40px;
  width: 40px;
  float: left;
  margin-left: 10px;
  margin-top: 10px;
}

.left {
  background-color: #80bfa8;
  height: 250px;
  width: 150px;
  float: left;
}
.red {
  background-color: #8c2727;
  height: 250px;
  width: 250px;
  float: right;
}
.orange-container {
  position: relative;
  left: 180px;
  top: 20px;
  padding: 10px;
}
.orange-container>li{
  background-color: #ff863f;
  box-sizing: border-box;
  height: 50px;
  width: 150px;
  border: 5px solid white;
  margin-top: 10px;
}
.bottom {
  background-color: #d98d30;
  height: 100px;
  width: 400px;
}

/* from yahoo ui */
  html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;*font-size:100%}legend{color:#000}#yui3-css-stamp.cssreset{display:none}
<head>
  <title>Puzzle 3 Farshad</title>
  <link rel="stylesheet" type="text/css" href="style3.css">
  <!--link rel="stylesheet" type="text/css" 
href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"-->
</head>
<body>
  <main>
    <div class="blue-container">
      <div class="top">Top</div>
      <ul class="white-container clearfix">
        <li>1</li>
        <li>2</li>
        <li>3</li>
      </ul>
    </div>
    <div class="clearfix">
      <div class="left">Left</div>
      <div class="red">Red</div>
      <ul class="orange-container">
        <li>A</li>
        <li>B</li>
        <li>C</li>
      </ul>
    </div>
    <div class="bottom">Bottom</div>
  </main>
</body>

【问题讨论】:

  • 外部样式表无法通过 HTTPS 获得,因此它不会在 SO sn-p 中加载。我试图将内容复制并粘贴到您的 sn-p 中,但它仍然看起来不像您的屏幕截图,甚至没有任何橙色框。请编辑并修复此问题,以便我们看到您在说什么。
  • 对不起!我不知道发生了什么!我修复了它,问题出现在 SO sn-p 中。感谢您的耐心等待。

标签: html css text position


【解决方案1】:

您的问题是由于您的 .red 元素是浮动的(.left 元素也是如此)。这意味着该区域中的任何文本内容都会在其周围浮动 - 在这种情况下,它被下推。通常,这会使第一个li 元素更高,以至于其文本(“A”)仍在其橙色背景内,但*在*浮动红色区域下方。但是,由于您将 li 元素的高度限制为 50px,lis 本身将保持在原处,但是,它们的内容会被向下推 - 在 li 的边界之外。

如果你想保持现状,即两个浮动元素彼此相邻,第三个兄弟元素.orange-container在第二个(.red)之上,你必须使用position: absolute并调整位置设置,如下面的 sn-p 所示(我只是大致设置它们以给您一个总体印象)。

main {
  margin: 0 auto;
  width: 400px;
}
.clearfix::after {
  content: "";
  clear: both;
  display: block;
}
.blue-container {
  height: 100px;
  width: 400px;
  position: relative;
}
.top {
  background-color: #141f40;
  height: 100px;
  width: 400px;
  float: right;
  
}
.white-container {
  background-color: white;
  height: 60px;
  width: 160px;
  position: absolute;
  top: 20px;
  left:220px;
}
.white-container>li{
  background-color: #a9004b;
  height: 40px;
  width: 40px;
  float: left;
  margin-left: 10px;
  margin-top: 10px;
}

.left {
  background-color: #80bfa8;
  height: 250px;
  width: 150px;
  float: left;
}
.red {
  background-color: #8c2727;
  height: 250px;
  width: 250px;
  float: right;
}
.orange-container {
  position: absolute;
  left: 300px;
  top: 120px;
  padding: 10px;
}
.orange-container>li{
  background-color: #ff863f;
  box-sizing: border-box;
  height: 50px;
  width: 150px;
  border: 5px solid white;
  margin-top: 10px;
}
.bottom {
  background-color: #d98d30;
  height: 100px;
  width: 400px;
}

/* from yahoo ui */
  html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;*font-size:100%}legend{color:#000}#yui3-css-stamp.cssreset{display:none}
<head>
  <title>Puzzle 3 Farshad</title>
  <link rel="stylesheet" type="text/css" href="style3.css">
  <!--link rel="stylesheet" type="text/css" 
href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"-->
</head>
<body>
  <main>
    <div class="blue-container">
      <div class="top">Top</div>
      <ul class="white-container clearfix">
        <li>1</li>
        <li>2</li>
        <li>3</li>
      </ul>
    </div>
    <div class="clearfix">
      <div class="left">Left</div>
      <div class="red">Red</div>
      <ul class="orange-container">
        <li>A</li>
        <li>B</li>
        <li>C</li>
      </ul>
    </div>
    <div class="bottom">Bottom</div>
  </main>
</body>

但我建议以不同的方式进行:将.orange 设为.red 的子元素,从.red.left 中删除float: left,然后将display: inline-block(和vertical-align: top;)应用于它们(并且仍然使.orange 成为.red 的子元素,具有相对位置并根据topleftsettings:

main {
  margin: 0 auto;
  width: 400px;
}
.clearfix::after {
  content: "";
  clear: both;
  display: block;
  
}
.blue-container {
  height: 100px;
  width: 400px;
  position: relative;
}
.top {
  background-color: #141f40;
  height: 100px;
  width: 400px;
  float: right;
  
}
.white-container {
  background-color: white;
  height: 60px;
  width: 160px;
  position: absolute;
  top: 20px;
  left:220px;
}
.white-container>li{
  background-color: #a9004b;
  height: 40px;
  width: 40px;
  float: left;
  margin-left: 10px;
  margin-top: 10px;
}

.left {
  background-color: #80bfa8;
  height: 250px;
  width: 150px;
  display: inline-block;
  vertical-align: top;
}
.red {
  background-color: #8c2727;
  height: 250px;
  width: 250px;
  display: inline-block;
  vertical-align: top;
}
.orange-container {
  position: relative;
  left: 30px;
  top: 0px;
  padding: 10px;
}
.orange-container>li{
  background-color: #ff863f;
  box-sizing: border-box;
  height: 50px;
  width: 150px;
  border: 5px solid white;
  margin-top: 10px;
}
.bottom {
  background-color: #d98d30;
  height: 100px;
  width: 400px;
}

/* from yahoo ui */
  html{color:#000;background:#FFF}body,div,dl,dt,dd,ul,ol,li,h1,h2,h3,h4,h5,h6,pre,code,form,fieldset,legend,input,textarea,p,blockquote,th,td{margin:0;padding:0}table{border-collapse:collapse;border-spacing:0}fieldset,img{border:0}address,caption,cite,code,dfn,em,strong,th,var{font-style:normal;font-weight:normal}ol,ul{list-style:none}caption,th{text-align:left}h1,h2,h3,h4,h5,h6{font-size:100%;font-weight:normal}q:before,q:after{content:''}abbr,acronym{border:0;font-variant:normal}sup{vertical-align:text-top}sub{vertical-align:text-bottom}input,textarea,select{font-family:inherit;font-size:inherit;font-weight:inherit;*font-size:100%}legend{color:#000}#yui3-css-stamp.cssreset{display:none}
<head>
  <title>Puzzle 3 Farshad</title>
  <link rel="stylesheet" type="text/css" href="style3.css">
  <!--link rel="stylesheet" type="text/css" 
href="http://yui.yahooapis.com/3.18.1/build/cssreset/cssreset-min.css"-->
</head>
<body>
  <main>
    <div class="blue-container">
      <div class="top">Top</div>
      <ul class="white-container clearfix">
        <li>1</li>
        <li>2</li>
        <li>3</li>
      </ul>
    </div>
    <div class="clearfix">
      <div class="left">Left</div><div class="red">Red
        <ul class="orange-container">
          <li>A</li>
          <li>B</li>
          <li>C</li>
        </ul>
      </div>
    </div>
    <div class="bottom">Bottom</div>
  </main>
</body>

还请注意,我将&lt;div class="red"&gt; 的开始标记向上移动到紧跟在前一个元素的结束标记之后,以避免这两个内联块之间的空白。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 2018-10-08
    • 1970-01-01
    • 2015-10-08
    相关资源
    最近更新 更多