将标签移动到待办事项栏的顶部

时间:2021-05-13 07:38:08

标签: css

Image

带有青色背景的废文本是一个标签,我希望标签出现在待办事项栏上方......有点像这样:

enter image description here

就像一个大矩形上面的小矩形。所以标签将位于待办事项栏的左上角。我将如何实现这一目标?我试过为标签设置边距,但根本没有效果。

标签的 CSS (style.css)

.tag {
  color: white;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 2px;
  text-transform: uppercase;

  background: #36d1dc;
  padding: 3px;

  border-radius: 5px;
  border-bottom-left-radius: 0px;
  border-bottom-right-radius: 0px;
}

标记部分的 React JS 代码 (Todo.js)

<li className={`todo-item${todo.completed ? "completed" : ""}`}>
  {isSpent && <p className="tag">Spent</p>}
  {isReceived && <p className="tag">Received</p>} ${text}
</li>

如果有人需要整个 todo.css 文件:https://pastecode.io/s/s5XZ9e3DRW

如果您需要更多信息,或者如果我的问题措辞不当,请告诉我。很感谢任何形式的帮助。谢谢!

3 个答案:

答案 0 :(得分:1)

我会采用这样的方法,例如,如果输入有任何值,input:focus 可以是在 .container 上设置的类。

我不明白你为什么在原始代码中使用 lip,因为你需要覆盖这么多东西才能让它看起来不错。

如果您想创建响应式网站,在固定像素值上使用“rem”也是首选,您只需覆盖 body 中的字体大小即可缩放所有内容。

.container {
  position: relative;
  display: flex;
}

body,
input {
  padding: 1rem;
}

.container.selected > .todo-item,
input:focus ~ .todo-item {
  transform: translateY(-1rem);
}

.todo-item {
  position: absolute;
  left: 1rem;
  transform: translateY(1rem);
  
  transition: transform 400ms;
}

.tag {
  color: white;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 2px;
  text-transform: uppercase;

  background: #36d1dc;
  padding: 3px;

  border-radius: 5px;
  border-bottom-left-radius: 0px;
  border-bottom-right-radius: 0px;
}
<div class="container">
  <input type="number">
  <div class="todo-item"><span class="tag">Spent</span></div>
  <div style="padding-top: 1rem"><-- select this input</div>
</div>

<div class="selected container" style="padding-top: 2rem">
  <input type="number">
  <div class="todo-item"><span class="tag">Spent</span></div>
</div>

答案 1 :(得分:1)

body {
  background-color: #48AEE0;
}
.container {
  height: 200px;
  width: 500px;
  display: flex;
  flex-direction: column;
  font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
}
.tag {
  color: white;
  font-size: 15px;
  font-weight: 400;
  letter-spacing: 2px;
  text-transform: uppercase;
  background: #36d1dc;
  padding: 3px;
  width: 80px;
  text-align: center;
  border-radius: 5px;
  border-bottom-left-radius: 0px;
  border-bottom-right-radius: 0px;
}
.other {
  margin: 0;
  display: inline-flex;
  flex-direction: column;
}
input {
  height: 30px;
  width: 200px;
  border: white;
  margin: 0;
}
 <div class="container">
        <div class="tag">spent</div>
        <div class="others">
            <input type="text">
        </div>
    </div>

答案 2 :(得分:0)

我想如果你将标签和导航栏分成两个不同的 div 标签并将它们放在主 div 上,例如:

<div id="wrapper">
    <div id="top-left">top left div</div>
    <div id="down">down side div</div>
</div>

并且 css 将类似于(在主 div 上使用网格):

#wrapper {
  display: grid;
}

#top-left {
  background: green;
  width: 250px;
  float:left;
  margin-right: 20px;
}
#down {
  background: blue;
  float:left;
  width: 500px;
} 

结果是:

enter image description here