मैं जो खोज रहा हूं उसका एक उदाहरण यहां दिया गया है, लेकिन मुझे केवल पैडिंग के लिए तत्वों का उपयोग करने से नफरत है। मैं सोच रहा था कि अतिरिक्त तत्वों का उपयोग किए बिना ऐसा करने का कोई तरीका है या नहीं।

body {
  margin: 0;
  display: flex;
  flex-direction: column;
  height: 100vh
}

#content {
  --size: 150px;
  width: var(--size);
  height: var(--size);
  border: solid;
}
<body>
  <div style='flex: 1;'></div>
  <div id='content'></div>
  <div style='flex: 3;'></div>
</body>
1
Mason 1 सितंबर 2019, 02:21

1 उत्तर

सबसे बढ़िया उत्तर

अतिरिक्त तत्व के बिना आप छद्म तत्व का उपयोग कर सकते हैं:

body {
  margin: 0;
  display: flex;
  flex-direction: column;
  height: 100vh
}

body:before {
  content: "";
  flex: 1;
}

body:after {
  content: "";
  flex: 3;
}

#content {
  --size: 150px;
  width: var(--size);
  height: var(--size);
  border: solid;
}
<body>
  <div id='content'></div>
</body>

या आप सीएसएस ग्रिड का उपयोग कर सकते हैं:

body {
  margin: 0;
  display: grid;
  grid-template-rows:1fr auto 3fr;
  height: 100vh
}

#content {
  --size: 150px;
  width: var(--size);
  height: var(--size);
  border: solid;
  grid-row:2;
}
<body>
  <div id='content'></div>
</body>

एक और विचार मार्जिन पर विचार करना है:

body {
  margin: 0;
  height: 100vh;
  overflow:hidden;
  display: flex;
  flex-direction: column;
}

#content {
  --size: 150px;
  width: var(--size);
  height: var(--size);
  border: solid;
  box-sizing:border-box;
  margin-top:calc((100vh - 150px)/4);
}

@media (max-height:150px) {
  #content {
    margin-top:0;
  }
}
<body>
  <div id='content'></div>
</body>
1
Temani Afif 1 सितंबर 2019, 00:05