body { margin: 0; padding: 0; } .container { display: flex; height: 100vh; } .sidebar { width: 300px; height: 100%; background-color: #f0f0f0; border-right: 1px solid #ccc; } .content { flex: 1; display: flex; flex-direction: column; } .box { flex: 1; display: flex; align-items: center; justify-content: center; color: #fff; font-size: 36px; font-weight: bold; text-align: center; box-sizing: border-box; padding: 20px; } .box:nth-child(1) { flex-grow:1; background-color: #f44336; } .box:nth-child(2) { flex-grow:1; background-color: #2196f3; } .box:nth-child(3) { margin-left: 20px; margin-right: 20px; margin-top: 10px; border-radius: 10%; background-color: #4caf50; flex-grow:1.5; } <div class="container"> <div class="sidebar"></div> <div class="content"> <div class="box box1">Box 1</div> <div class="box box2">Box 2</div> <div class="box box3 item">Box 3 <img src="img/box3.jpg" alt=""><br> <div class="label">编辑器</div> <img src="img/box3.jpg" alt=""> <div class="label">编辑器</div> <img src="img/box3.jpg" alt=""> <div class="label">编辑器</div> <img src="img/box3.jpg" alt=""> <div class="label">编辑器</div> <img src="img/box3.jpg" alt=""> <div class="label">编辑器</div> </div> <div class="box box4"> <div class="sub-box">Sub Box 1</div> <div class="sub-box">Sub Box 2</div> <div class="sub-box">Sub Box 3</div> </div> <div class="box box5"> <div class="sub-box">Sub Box 1</div> <div class="sub-box">Sub Box 2</div> </div> </div> </div> 补充样式使box3中的 图片占一行 文字占一行 文字位于图片的正下方,不同图片间存在间距
时间: 2023-10-06 18:13:42 浏览: 61
可以使用flex布局和align-items属性来实现图片和文字一行显示,同时使用justify-content属性来控制图片和文字的对齐方式。代码如下:
```
.item {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
text-align: center;
}
.item img {
margin-bottom: 10px;
width: 100%;
}
.label {
margin-top: 10px;
}
```
将上述代码添加到原有的CSS样式中即可。同时,为了让不同图片之间存在一定的间距,可以为img标签添加一个margin-bottom属性。
相关问题
使用html写一个后台管理界面示例,要求包含头部,头部中左边显示中央管理平台、右边显示登录用户要求未登录强制跳转登录页面登录后鼠标悬浮时展示用户信息以及退出 功能,包含一个左边侧边栏,左边侧边栏示例显示三个大的功能模块分别是用户管理、数据库管理、页面管理,这三个模块要求能被点击后展示各个模块的子模块且各个子模块 也能被点击,侧边栏尽量靠左边,侧边栏右侧部分是显示子模块数据的地方背景设置为浅灰色,整个页面需要自适应移动端设备,侧边栏下方要能留出一定空间方便日后添加 功能,要求头部和侧边栏固定,只有显示数据区域可以滚动
<!DOCTYPE html>
<html>
<head>
<title>后台管理界面示例</title>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<style>
body {
margin: 0;
padding: 0;
font-family: Arial, sans-serif;
line-height: 1.5;
background-color: #f2f2f2;
}
.container {
display: flex;
flex-direction: column;
height: 100vh;
}
header {
display: flex;
justify-content: space-between;
align-items: center;
padding: 10px 20px;
background-color: #333;
color: #fff;
}
header a {
color: #fff;
text-decoration: none;
}
.user-info {
position: relative;
}
.user-info:hover .dropdown {
display: block;
}
.dropdown {
display: none;
position: absolute;
top: 30px;
right: 0;
background-color: #fff;
border: 1px solid #ccc;
padding: 10px;
z-index: 1;
}
.dropdown a {
display: block;
padding: 5px 0;
}
.sidebar {
flex: 0 0 auto;
background-color: #fff;
box-shadow: 2px 0 5px rgba(0, 0, 0, 0.2);
position: relative;
z-index: 2;
width: 250px;
}
.sidebar ul {
margin: 0;
padding: 0;
list-style: none;
}
.sidebar li {
padding: 10px;
border-bottom: 1px solid #ccc;
}
.sidebar li:hover {
background-color: #f2f2f2;
}
.sidebar li.active {
background-color: #333;
color: #fff;
}
.sidebar li a {
color: #333;
text-decoration: none;
}
.sidebar li.active a {
color: #fff;
}
.content {
flex: 1 1 auto;
overflow-y: auto;
padding: 20px;
}
@media screen and (max-width: 768px) {
.sidebar {
width: 100%;
height: 100%;
position: absolute;
top: 0;
left: -250px;
z-index: 3;
transition: all 0.3s;
}
.sidebar.show {
left: 0;
}
.sidebar ul {
display: flex;
flex-direction: column;
height: 100%;
align-items: center;
justify-content: center;
}
.sidebar li {
border: none;
padding: 20px;
margin: 10px 0;
background-color: #fff;
}
.sidebar li:hover {
background-color: #f2f2f2;
}
.sidebar li.active {
background-color: #333;
color: #fff;
}
.sidebar li.active a {
color: #fff;
}
.content {
padding: 10px;
}
}
</style>
</head>
<body>
<div class="container">
<header>
<a href="#">中央管理平台</a>
<div class="user-info">
<span>登录用户</span>
<div class="dropdown">
<a href="#">用户信息</a>
<a href="#">退出</a>
</div>
</div>
</header>
<div class="sidebar">
<ul>
<li class="active"><a href="#">用户管理</a></li>
<li><a href="#">数据库管理</a></li>
<li><a href="#">页面管理</a></li>
</ul>
</div>
<div class="content">
<h1>用户管理</h1>
<p>这里是用户管理的内容。</p>
</div>
</div>
<script>
const sidebar = document.querySelector('.sidebar');
const toggleBtn = document.querySelector('.toggle-btn');
const activeLink = document.querySelector('.sidebar li.active a');
// Show/hide sidebar on mobile
toggleBtn.addEventListener('click', () => {
sidebar.classList.toggle('show');
});
// Set active link
activeLink.style.color = '#fff';
</script>
</body>
</html>
HTML编写页面, 1.左侧一个侧边框div;右侧从上到下依次排列五个盒子; 2.右侧五个盒子的宽度刚好填充满页面,前四个盒子等高,第五个盒子是第4个盒子的两倍;每个盒子保有一定间距,且总体高度与左侧状态栏同高 3.右侧第四个(父)盒子有三个子盒子,子盒子与父盒子同高,宽度从左到右依次为较大,较小,中等;子盒子与父盒子保有一定间距 4.右侧第五个盒子有两个均等分的子盒子,子盒子与父盒子保有一定间距
可以使用 HTML 和 CSS 实现这个页面的布局。以下是一个简单的示例代码:
```html
<!DOCTYPE html>
<html>
<head>
<title>页面布局示例</title>
<style>
* {
margin: 0;
padding: 0;
box-sizing: border-box;
}
body {
display: flex;
height: 100vh;
flex-direction: row;
}
.sidebar {
width: 20%;
background-color: #eee;
border-right: 1px solid #ccc;
padding: 20px;
}
.container {
display: flex;
flex-direction: column;
width: 80%;
padding: 20px;
}
.box {
margin-bottom: 20px;
flex-grow: 1;
background-color: #ddd;
padding: 20px;
}
.box:last-child {
flex-grow: 2;
}
.box:nth-child(4) {
display: flex;
flex-direction: row;
align-items: stretch;
}
.box:nth-child(4) .sub-box {
flex-grow: 1;
margin-right: 20px;
background-color: #ccc;
padding: 10px;
}
.box:nth-child(4) .sub-box:last-child {
margin-right: 0;
}
.box:nth-child(5) {
display: flex;
flex-direction: row;
align-items: stretch;
}
.box:nth-child(5) .sub-box {
flex-grow: 1;
margin-right: 20px;
background-color: #bbb;
padding: 10px;
}
.box:nth-child(5) .sub-box:last-child {
margin-right: 0;
}
</style>
</head>
<body>
<div class="sidebar">
侧边栏
</div>
<div class="container">
<div class="box"></div>
<div class="box"></div>
<div class="box"></div>
<div class="box">
<div class="sub-box" style="flex-basis: 50%;">较大</div>
<div class="sub-box" style="flex-basis: 25%;">中等</div>
<div class="sub-box" style="flex-basis: 25%;">较小</div>
</div>
<div class="box">
<div class="sub-box"></div>
<div class="sub-box"></div>
</div>
</div>
</body>
</html>
```
解释一下代码:
1. `body` 元素设置为 `display: flex`,使其成为一个 flex 容器,子元素排列方式为 `flex-direction: row`,即横向排列。
2. 左侧的侧边栏使用一个 `div` 元素,并设置其宽度为 20%,背景颜色为灰色,右侧和下方分别带有一像素的灰色边框和 20px 的内边距。
3. 右侧的容器使用一个 `div` 元素,并设置其宽度为 80%。由于默认情况下 `div` 元素的高度为内容的高度,因此可以使用 `flex-direction: column` 让子元素纵向排列。
4. 右侧的五个盒子使用 `div` 元素,并设置其为灰色背景颜色,下方带有 20px 的内边距和 20px 的外边距。其中第五个盒子的高度为第四个盒子的两倍,可以通过设置第五个盒子的 `flex-grow` 属性为 2 来实现。
5. 第四个盒子的三个子盒子使用 `div` 元素,并设置其为灰色背景颜色、20px 的内边距和 10px 的外边距。父盒子使用 `display: flex`,让子元素横向排列,并使用 `align-items: stretch` 让子元素和父元素等高。子盒子的宽度使用 `flex-basis` 属性设置。
6. 第五个盒子的两个均等分的子盒子也使用 `div` 元素,并设置其为灰色背景颜色、20px 的内边距和 10px 的外边距。和第四个盒子一样,父盒子使用 `display: flex`,让子元素横向排列,并使用 `align-items: stretch` 让子元素和父元素等高。