本文尝试了一种新的前端开发模式,并证明了只要prompt得当,或者说有丰富的prompt使用经验,通过gpt4可以提高开发效率的事实。
You:
如图所示,上述图片展示的是一个简易的css布局样式,
- 我们记蓝色背景的矩形为A,黄色矩形为B,黄色矩形之上的灰色矩形为C,绿色矩形为D,橘红色为E。
- 其中,A的尺寸是固定的,为354px X 600px;B相对于A在水平和竖直方向上居中对齐。
- 并且B的宽度是A的70%,高度是A的50%~80%;
- C与B的宽度相同,高度固定为200px;
- D的高度最低为35px最大为70px,随其中文字高度发生变化;
- E占据B竖直方向上的剩余空间,举例下边底线为20px,左右为10px;
- E中输入文字导致E的高度发生变化,从而使B的高度发生变化,但是B高度最大为A的80%,因此在到达这一限度时,E中需要出现滚动条,防止E高度继续增大从而导致B的尺寸发生变化。
请根据我的描述和上面的图片生成符合要求的html文件源码.
ChatGPT
基于您的描述和图片,以下是一个简化版本的HTML和CSS代码,可以实现所描述的布局:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Layout</title>
<style>
.container-a {
width: 354px;
height: 600px;
background-color: blue;
display: flex;
align-items: center;
justify-content: center;
position: relative;
}
.box-b {
width: 70%;
height: 50%; /* Initial height, can grow up to 80% of .container-a */
background-color: yellow;
position: relative;
overflow: hidden;
}
.box-c {
width: 100%;
height: 200px;
background-color: grey;
}
.box-d {
background-color: green;
min-height: 35px;
max-height: 70px;
overflow: auto;
}
.box-e {
background-color: orange;
margin: 20px 10px 10px 10px;
overflow: auto;
}
</style>
</head>
<body>
<div class="container-a" id="containerA">
<div class="box-b" id="boxB">
<div class="box-c"></div>
<div class="box-d">D content</div>
<div class="box-e">E content</div>
</div>
</div>
<script>
// JavaScript code to manage the dynamic heights and overflow
const containerA = document.getElementById('containerA');
const boxB = document.getElementById('boxB');
const boxE = document.querySelector('.box-e');
function adjustHeight() {
let maxHeightB = containerA.clientHeight * 0.8;
let currentHeightB = boxB.clientHeight;
let heightE = boxE.scrollHeight;
if (currentHeightB + heightE > maxHeightB) {
boxE.style.overflowY = 'scroll';
boxE.style.maxHeight = maxHeightB - currentHeightB + 'px';
} else {
boxE.style.overflowY = 'hidden';
}
}
// Call adjustHeight whenever the content of E changes
boxE.addEventListener('input', adjustHeight);
// Initial adjustment
adjustHeight();
</script>
</body>
</html>
在这个代码中,.container-a
是蓝色背景的容器 A,.box-b
是黄色矩形 B,.box-c
是灰色矩形 C,.box-d
是绿色矩形 D,.box-e
是橘红色矩形 E。B 的高度设置为 A 的初始50%,通过 JavaScript 动态调整以确保不超过80%。E 的高度随内容自动增长,但超过 B 的80%时会出现滚动条。这段代码还包括了处理滚动条的 JavaScript 逻辑。
请根据您的实际需求调整这段代码。如果需要将文本输入放入 E 中,并实时调整大小,请在 E 的内部添加 <textarea>
或其他适合的 HTML 元素,并适当调整 JavaScript 代码以响应内容变化。
You:
是这样的,我要求必须使用css完成,不要用到js
ChatGPT
如果您需要一个纯 CSS 解决方案来构建布局,下面是一个示例代码,它使用了 CSS 来实现容器的居中,滚动条的显示,以及高度的限制。由于 CSS 本身不提供容器高度的动态计算功能,所以 B
的高度会基于内容的增加而增加,但不会超过 A
的 80% 高度。对于 E
的内容,当内容溢出时会显示滚动条。
请注意,如果 E
的内容非常多,它将会触发滚动,但 B
的高度将不会因 E
的内容超出而增长超过 A
的 80%。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>CSS Only Layout</title>
<style>
.container-a {
width: 354px;
height: 600px;
background-color: blue;
display: flex;
align-items: center;
justify-content: center;
}
.box-b {
width: 70%; /* 70% of A */
max-height: 80%; /* 80% of A */
background-color: yellow;
display: flex;
flex-direction: column;
}
.box-c {
width: 100%; /* Same as B */
height: 200px; /* Fixed height */
background-color: grey;
}
.box-d {
background-color: green;
min-height: 35px; /* Minimum height of D */
max-height: 70px; /* Maximum height of D */
}
.box-e {
background-color: orange;
margin: 20px 10px 10px 10px; /* Margins as per specification */
flex-grow: 1; /* Takes up all remaining space */
overflow: auto; /* Scrollbar if content overflows */
}
</style>
</head>
<body>
<div class="container-a">
<div class="box-b">
<div class="box-c"></div>
<div class="box-d">D content</div>
<div class="box-e">
E content <br> <!-- Repeat as needed to simulate content overflow -->
E content <br>
E content <br>
<!-- ... -->
</div>
</div>
</div>
</body>
</html>
在这个示例中,我们使用了 flex
布局来管理容器内部的元素。.box-e
设置了 flex-grow: 1;
来确保它填充 .box-b
剩余的空间,并且当内容超出时,会出现滚动条。
请根据您的需求调整这个例子中的文字内容和其他属性。这个示例没有动态调整 B
的高度,而是使用了 max-height
来限制其最大高度,因为纯 CSS 不能根据内容动态调整高度。
看效果
结论: 完全满足要求
原文链接:https://juejin.cn/post/7322351017525674018 作者:慕仲卿