CSS基础测试1
Opened this issue · 62 comments
dl {
display: flex;
flex-wrap: wrap;
}
dt, dd {
width: 50%;
overflow: hidden;
margin: 0;
}
* { padding: 0; margin: 0; }
dl { border: 1px solid #999; padding: 10px; font-size: 14px; line-height: 20px; color: #999; width: 500px; overflow: hidden; }
dl dt { float: left; width: 50%; }
dl dd { float: right; width: 50%; text-align: right; }
dl {
overflow: hidden;
}
dt {
float: left;
clear: both;
}
dd {
float: right;
}
dl{
width:400px;
border:1px solid #eee;
}
dl::after{
content: "";
display: block;
clear: both;
visibility: hidden;
}
dl dd{
margin-left:0;
}
dl dt,dl dd{
width:50%;
padding:5px 10px;
box-sizing: border-box;
}
dl dt{
float:left;
}
dl dd{
float:right;
text-align: right;
}
dt {
float: right;
}
dl{
width: 400px;
border: 1px solid;
display: flex;
flex-wrap: wrap;
padding: 10px
}
dt,dd{
width: 50%;
}
dd{
margin: 0;
text-align:right;
}
dl {
font-size: 0;
}
dt, dd {
display: inline-block;
width: 50%;
margin-inline-start: 0;
font-size: 12px;
}
dd {
text-align: right;
}
dl{
width: 50%;
border: 1px solid #eee;
margin: 0 auto;
padding: 20px 20px 0 20px;
overflow: hidden;
color: gray;
}
dt, dd{
width: 50%;
margin-bottom: 20px;
}
dt{
float: left;
}
dd{
float: right;
text-align: right;
}
*{
margin: 0;
padding: 0;
}
dl{
width: 50%;
border: 1px solid #eee;
margin: 0 auto;
padding: 20px 20px 0 20px;
overflow: hidden;
color: gray;
}
dt, dd{
width: 50%;
margin-bottom: 20px;
}
dt{
float: left;
}
dd{
float: right;
text-align: right;
}
- inline-block 实现,不过这种实现要设置 dl 的 font-size 为0,导致需要重新设置子元素的字体
dl {
padding: 5px;
border: 1px solid #999;
font-size: 0;
}
dt, dd {
display: inline-block;
width: 50%;
font-size: 12px;
}
dd {
margin-inline-start: 0;
text-align: right;
}
- flex 实现,不用考虑 font-size 的问题了。
dl {
padding: 5px;
border: 1px solid #999;
display: flex;
flex-wrap: wrap;
}
dt, dd {
flex: 0 0 50%;
}
dd {
margin-inline-start: 0;
text-align: right;
}
- float 实现,在宽度不够情况没有上述两种实现效果好(虽然都不咋地
dl {
padding: 5px;
border: 1px solid #999;
}
dl:after {
content: '';
clear: both;
display: block;
}
dt {
float: left;
clear: right;
}
dd {
float: right;
margin-inline-start: 0;
}
div{
text-align: right;
width: 300px;
padding: 10px;
border:1px solid #ccc;
}
dt{
float: left;
}
dl {
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding: 3%;
border: 1px solid #d7d7d7;
}
dt {
width: 50%;
}
dd {
width: 50%;
text-align: right;
margin: 0;
}
dl,dd{
margin: 0px;
}
dl{
width:50%;
padding: 10px;
border:2px solid #eae4e4;
line-height: 30px;
}
dl:after{
content: '';
clear: both;
display: block;
}
dt{
float: left;
clear: right;
}
dd{
float: right;
}
*{margin: 0;padding: 0;}
dl{
display:flex;
flex-wrap:wrap;
min-width: 300px;
border:1px solid #eee;
}
dd,dt{
width: 50%;
}
dd{
text-align: right;
}
dt{
display: inline-block;
width: 50%;
}
dd{
display: inline-block;
width: 100px;
text-align: right;
}
dl{
display: grid;
grid-template-columns:auto 1fr;
padding: 15px;
border: 1px solid #ddd;
line-height:30px;
}
dd{
text-align:right;
}
思路:
拿到题目想到的当然是inline-block / float / flex.
先看浮动,懒孩子不想清浮动,本能的拒绝了。
再看flex,display:flex + flex-wrap:wrap可以实现,
但是对50%的宽度产生质疑,我想使用flex:1,奈何dom被题目规定死了。
在UI里,前列往往是可控的,但后列一般是后端给的数据,我想尽可能大的把宽度给后列。50%/50%,40%/60%,30%/70%对我来说都没有意义,如果宽度定死了,何必flex。
inline-block也同样是宽度固定给否了。
掰掰手指头,我想到了grid布局。
用浮动实现还算比较简洁吧
dl{
margin: 0;
padding: 5px 10px;
overflow: hidden;
border: 1px solid #ccc;
line-height: 2em;
}
dt{
float: left;
clear: left;
}
dd{
float: right;
clear: right;
}
* {
margin: 0;
padding: 0;
}
dl {
color: #999;
line-height: 2;
padding: 10px;
border: 1px solid;
}
dd{
color: #333;
}
/* flex */
.one {
display: flex;
flex-flow: row wrap;
}
.one>dt,
.one>dd {
width: 50%;
}
.one>dd {
text-align: right;
}
/* 浮动 */
.two>dt {
float: left;
}
.two>dd {
width: 100%;
text-align: right;
}
/* inline-block */
.three{
font-size: 0;
}
.three>dt,.three>dd{
width: 50%;
display: inline-block;
font-size: 12px;
}
.three>dd {
text-align: right;
}
*{
margin:0px;
padding: 0px;
}
dl{
border:1px solid black;
width:560px;
margin:20px auto;
padding-left:35px;
padding-top: 20px;
}
dt{
width:120px;
height:25px;
}
dd{
width:160px;
height:25px;
position:relative;
top:-28px;
left:360px;
text-align: right;
}
div,dl,dt,dd{
margin: 0;
padding: 0;
}
dl{
border: 1px solid #000000;
position: relative;
}
dt{
position: relative;
}
dd{
position: absolute;
top: 0px;
right: 0px;
}
dl>dd:nth-child(2){
top: 0;
}
dl>dd:nth-child(4){
top: 20;
}
dl>dd:nth-child(6){
top: 40;
}
dl>dd:nth-child(8){
top: 60;
}
dl{
width: 400px;
border: 1px solid #ccc;
padding:8px;
margin: 10px 0 10px 10px;
}
dl>dt{
float: left;
color: #666;
}
dl>dd{
color: #999;
text-align: right;
margin-bottom: 8px;
}
dl {
border: 1px solid gray;
overflow: hidden;
}
dl dt {
float: left;
padding: 10px;
}
dl dd {
padding: 10px;
text-align: right;
}
dl {
border: 1px #ccc solid;
overflow: hidden;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
padding-left: 10px;
padding-right: 10px;
padding-bottom: 10px;
}
dl>dt,
dl>dd {
width: 50%;
margin: 10px 0 0 0;
}
dl>dd {
text-align: right;
}
dl {
width: 400px;
height: 200px;
border: 1px solid black;
display: block;
padding: 5px;
}
dt,
dd {
display: inline;
margin: 0;
padding: 0;
}
dt:not(:first-child):before {
content: "\0A";
white-space: pre;
}
dd {
float: right;
}
dl {
width: 300px;
padding: 10px;
border: 1px solid gray;
}
dt {
float: left;
}
dd {
text-align: right;
}
dl {
display: inline-block;
padding: 15px;
border: 1px solid #000;
text-align: right;
}
dt {
float: left;
}
dd {
margin-left: 150px;
}
dt{
float:left;
}
dd{
text-align:right;
}
dd:after{
display: table;
content: " ";
clear: both;
}
body{font-size:14px; margin:0; padding:0;}
dl,dt,dd{ margin:0; padding:0;}
dl{ line-height:28px; border:1px solid #CCC; padding:0 10px;}
dl dt{ float:left;}
dl dd{ text-align:right;}
dl{
display:flex;
flex-wrap: wrap;
width:100%;
min-width:320px;
padding:0 15px;
border:1px solid #999;
box-sizing: border-box;
color:#666;
}
dt{
line-height:2.2;
width:50%;
margin: 0;
}
dd{
width:50%;
margin: 0;
text-align: right;
}
dl,dd,dt{
margin:0;
padding:0;
}
dl{
padding:10px;
border:1px solid #ccc;
}
dl:before,dl:after{
content:'';
display:table;
}
dl:after{
clear:both;
}
dt{
float:left;
text-align:left;
}
dd{
float:right;
text-align:right;
}
dt,dd{
width:50%;
}
dl{
padding: 10px;
border: 1px solid #ccc;
display: flex;
flex-wrap: wrap;
}
dl>\*{
flex: 0 0 50%;
margin: 0;
}
dl>\*:nth-child(even){
text-align: right;
}
dt { position: absolute; }
dd {text-align: right; }
dl {
border:1px solid #ccc;
padding:8px;
max-width: 400px;
}
dt {
display:inline-block;
width:50%;
}
dd {
display:inline;
margin:0;
float:right;
}
dl{
border: 1px solid #eee;
padding: 8px 12px;
margin: 10px;
}
dt{
float: left;
margin-right: 20px;
padding: 7px 0px;
}
dd{
display: table-cell;
width: 20000px;
//或者overflow:hidden也行
text-align: right;
word-break: break-all;
padding: 7px 0; //用padiding来撑开行之间的间距,不直接用line-height,假设dd字符过长变成几行,line-height会导致行高过稀,用margin的话,dt float垂直margin不会重叠,dd overflow的margin会重叠,不在一行上,而table-cell属性直接不支持margin
}
dt { position: absolute; }
dd {text-align: right; }
or > dt { float: left; }
*{margin:0;padding:0;}
dl{width: 40%;margin:10% auto;border: 1px solid #ddd;display: table;content: '';padding:1%;}
dd,dt{width:49%;}
dt{line-height: 30px;float: left;}
dd{float: right;text-align: right;line-height: 30px;}
dl,dt,dd{
padding: 0;
margin: 0;
box-sizing: border-box;
line-height: 40px;
font-size: 14px;
}
dl{
display: flex;
display: -webkit-flex;
flex-flow: row wrap;
border:1px solid #ddd;
}
dl dt{
width: 40%;
padding: 0 10px;
}
dl dd{
padding: 0 10px;
width: 60%;
text-align:right;
}
/*内容多时自动换行自适应页面*/
dl{
overflow: hidden;
padding:15px;
border:1px solid #ddd;
}
dt{
float: left;
}
dd{
margin: 0 0 10px;
padding-left: 5em;
text-align: right;
}
<style>
dl {
display: flex;
flex-wrap: wrap;
padding: 10px;
justify-content: space-between;
border: 1px solid #cccccc;
}
dt, dl {
width: 50%;
line-height: 35px;
}
</style>
dl{
width: 30%;
margin:0 35%;
overflow: hidden;
border: 1px solid #ccc;
padding: 20px;
box-shadow: 1px 1px 2px 1px #ccc;
color:#666;
}
dt{
float: left;
padding:5px;
clear:both;
}
dd{
float:right;
}
dl {
border: 1px solid grey;
padding: 0.5em;
display: flex;
flex-wrap: wrap;
justify-content: space-between;
}
dt {
flex-basis: 50%;
}
dl {
border: 1px solid grey;
padding: 0.5em;
display: flex;
flex-wrap: wrap;
align-items: center
}
dt {
flex-basis: 50%;
}
dd {
text-align: right;
flex-basis:50%;
margin: 0;
}
- 使用flex布局来处理dl里面元素
2.使用flex-basis来使dt/dd元素各占一行的50%,并消除dd的默认的margin影响
3.使用text-align来使dd中文字布局靠右
给定的布局中,dt、dd都是块级元素、会分行,可以使用“二列布局”思路,分成两列,并且对右边使用text-align: right使其向右对齐。
dt {
float: left;
}
dd {
overflow: hidden;
text-align: right;
}
补充一个没有的:
dl {
border: 1px solid #ccc;
background-color: #fff;
padding: 10px;
line-height: 1.5;
}
dd {
text-align: right;
margin: -1.5em 0 0 5em;
}
dl{
border:1px solid gray;
display: grid;
grid-template-columns: repeat(2,minmax(200px, 1fr));
min-width: 400px;
}
dt,dd{
min-width: 200px;
line-height: 1.5;
}
dd{
text-align: right;
}
今天直播的时候张老师在找一个flex版本的没找到, 我随意写了一个, 不知道这个效果是不是张老师想要的那个, 效果可以看这里 https://codepen.io/zhenhappy/pen/ebQRJB
dl {
display: flex;
flex-direction: column;
}
dt {
width: 5em;
line-height: 1.6em;
}
dd {
/* margin: 0; */ /* 这里用了flex后, margin影响不到布局, 所以这里可以省略 */
text-align: right; /* 这里是为了保证文字溢出换行后右对齐 */
align-self: flex-end; /* 设置单个flex-item在交叉轴上的对齐位置 */
max-width: calc(100% - 5em); /* 设置最大宽度, 当文字溢出时候会自动换行 */
line-height: 1.6em; /* 手动指定一个行高 */
transform: translateY(-1.6em); /* 让第一行元素向上偏移一个行高的高度, 这样就可以和dt元素顶部对齐 */
}
dd:empty::before { /* 处理内容为空的情况 */
content: '\00a0'; /* 设置一个空格, 让页面布局不会错乱 */
}
dl{
display: flex;
flex-wrap: wrap;
border: 2px solid #aaa;
padding:10px;
}
dd{
margin:0;
width: calc(100% - 100px);
text-align:right;
margin:10px 0;
}
dt{
width:100px;
margin:10px 0;
}
body,
dl,
dt,
dd {
margin: 0
}
dl {
line-height: 32px;
width: 560px;
text-indent: 16px;
border: 1px solid #ccc;
}
dl>dd {
margin-top: -32px;
direction: rtl;
color: #ccc;
}
dl,dt,dd { margin: 0 }
dl {
width: 500px;
padding: 1rem;
line-height: 2;
color: #777;
border: 1px solid #777;
}
dl::after {
content: '';
display: block;
clear: both;
}
dt {
float: left;
width: 50%;
}
dd {
float: right;
}
dl{
width: 400px;
padding: 5px 10px;
border: 1px solid #c1c1c1;
overflow: hidden;
}
dt, dd {
width: 50%;
margin: 0;
padding: 5px 0;
float: left;
}
dd {
text-align: right;
}
1. 笨方法:子元素宽度50%
dl {
padding:10px;
font-size: 0;
line-height: 30px;
}
dt, dd {
font-size: 14px;
display: inline-block;
width: 50%;
}
dd {
text-align:right;
margin: 0;
}
2. float
dl {
overflow: auto;
line-height: 30px;
}
dt, dd {
float: left;
width: 50%;
}
dd {
margin-left: 0;
text-align: right;
}
3. flex
dl {
display: flex;
flex-wrap: wrap;
line-height: 30px;
}
dt, dd {
width: 50%;
}
dd {
text-align: right;
margin-left: 0;
}
补充上面解答中认为更好的答案
4. 浮动,实现更巧妙
dt {
text-align: right;
}
dt {
flat: left;
}
5. grid
dl {
display: grid;
grid-template-columns: auto 1fr;
line-height: 30px;
}
dd {
text-align: right;
}
//代码片段
<style>
html {
font-size: 16px;
}
body {
margin: 0;
}
.qiuzhi-box {
width: 300px;
margin: 1rem;
padding: 1rem;
border: 1px solid #CCCCCC;
box-sizing: border-box;
}
.qiuzhi-box::before,
.qiuzhi-box::after {
content: '';
display: table;
}
.qiuzhi-box::after {
clear: both;
}
.qiuzhi-box dt,
.qiuzhi-box dd {
padding-bottom: .25rem;
}
.qiuzhi-box dt:last-child,
.qiuzhi-box dd:last-child {
padding-bottom: 0;
}
.qiuzhi-box dt {
float: left;
width: 25%;
text-align: left;
}
.qiuzhi-box dd {
float: right;
width: 75%;
margin: 0 auto;
text-align: right;
}
</style>
dl,dd{
margin:0;
}
dl{
width:500px;
border :1px solid #e5e5e5;
padding:0 20px;
}
dt{
float:left;
width:100px;
margin-top:10px;
color:#666;
}
dd{
overflow: hidden;
padding:10px 0;
text-align: right;
}
因为dd是text-align:right; 所以文字都是右对齐的,如果内容超过一行,也是右对齐的,有没有办法不超过一行的时候右对齐, 超过一行的话就左对齐。
dl {
font-size: 0;
border: 1px solid #dedede;
padding: 15px;
}
dd,
dt {
display: inline-block;
width: 50%;
margin: 0;
font-size: 16px;
}
dt{
color: #b0b0b0;
}
dd {
text-align: right;
}
dl{
border: 1px solid #eee;
display: flex;
flex-wrap: wrap;
padding: 20px;
}
dt,dd{
width: 50%;
overflow: hidden;
margin: 0;
}
dd{
text-align: right;
}
dt {
float: left;
clear: both;
}
dd {
float: right;
}
dl{
padding:10px;
border:1px solid #666;
display:inline-block;
line-height:35px;
}
dd{
padding-left:100px;
text-align:right;
}
dt{
color:rgb(200,200,200);
float:left;
}
dl {
border: 1px solid;
padding: 10px;
}
dt,
dd {
margin: 5px 0;
width: 49%;
display: inline-block;
}
dd {
margin:0;
text-align: right;
}
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width">
<title>JS Bin</title>
</head>
<body>
<dl>
<dt>手机系统</dt>
<dd>Android</dd>
<dt>登录方式</dt>
<dd>QQ 互联登录</dd>
<dt>绑定时间</dt>
<dd>2019-09-02 11:10</dd>
<dt>绑定状态</dt>
<dd>有效</dd>
</dl>
</body>
</html>
dl{
display: flex;
flex-wrap: wrap;
}
dd{
margin: 0;
text-align: right;
flex:70%;
}
dt{
flex: 30%;
}
dl{ display: flex; flex-wrap: wrap; } dd{ margin: 0; text-align: right; flex:70%; } dt{ flex: 30%; }
good idea