实现标签及布局样式的问题

熵桥潮汐
• 阅读 1333

要实现下图这个效果:

问题

实现标签及布局样式的问题

左上角label的边框宽度为0.5px,字体大小为15px;下面的文字和label间距为16px。所有元素宽度固定,高度自适应。

解决方案

html代码

<div class="parent">
    <div id="wrapper">
        <div id="label">
            Lorem ipsum
        </div>
    </div>
    <div class="content">
        Lorem ipsum dolor sit amet, consectetur adipisicing elit. Numquam accusamus ipsa voluptatem rem labore in alias officia, iste molestiae, illum ratione explicabo delectus laborum iusto. Tempore aspernatur, nesciunt excepturi eum.
    </div>
</div>

CSS代码

.parent{
    width:300px;
    background: goldenrod;
}
#wrapper{
    position: relative;
}
#label{
    width: 100px;
    border: 1px solid black;
    font-size: 30px;
    transform: scale(.5);
    transform-origin: 0 0;
    position: absolute;
    top: 0;
    left: 0;
}
.content{
    margin-top: 16px;
}

js代码

var label = document.getElementById('label');
var wrapper = document.getElementById('wrapper');
var labelHeight = window.getComputedStyle(label).height;
wrapper.style.height = parseInt(labelHeight)/2 + 'px';

## 心路历程
首先,0.5px的边框宽度和15px的字体大小,一般情况下,是不支持的。这时就使用了css3的缩放。且以父元素左上角为缩放原点。

#label{
    width: 100px;
    border: 1px solid black;
    font-size: 30px;
    transform: scale(.5);
    transform-origin: 0 0;
}
.content{
    margin-top: 16px;
}

效果是这样的
实现标签及布局样式的问题

可以看到虽然label进行了缩放,但还占据了原来的大小的空间。

所以就显示了增加蓝色框的wrapper的意义,使label脱离文档流和文本流,同时占位。(float并不能脱离文本流)
进一步的代码是这样的:

#wrapper{
        border: 1px solid blue;
        position: relative;
    }
    #label{
        width: 100px;
        border: 1px solid black;
        font-size: 30px;
        transform: scale(.5);
        transform-origin: 0 0;
        position: absolute;
        top: 0;
        left: 0;
    }
    .content{
        border: 1px solid red;
        margin-top: 16px;
    }

效果:
实现标签及布局样式的问题

哦哟~蓝色框wrapper塌了,怎么占位呢?
label高度是不定的,怎么设置wrapper的高度呢?
只好用js了:

var label = document.getElementById('label');
var wrapper = document.getElementById('wrapper');
var labelHeight = window.getComputedStyle(label).height;
wrapper.style.height = parseInt(labelHeight)/2 + 'px';

效果:
实现标签及布局样式的问题

我胡汉三又回来了~

请大神指点有没有更好的方法~

点赞
收藏
评论区
推荐文章
blmius blmius
4年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(
Wesley13 Wesley13
4年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
秃头王路飞 秃头王路飞
3年前
总结前端元素的各种高度(上)
HTMLElement.clientHeight只读属性Element.clientHeight对于没有定义CSS或者内联布局盒子的元素为0;否则,它是元素内部的高度(以像素为单位),包含内边距,但不包括边框、外边距和水平
风花雪月 风花雪月
2年前
html加css样式,不用js实现切换内容,直接上测试代码!
/清样式,如果是项目中,不推荐使用通配符来清样式,建议使用标签清样式,通配符清样式会增加页面压力/margin:0;padding:0;/宽度为屏宽的一半,高度为屏高的一半,然后居中/.boxwidth:50vw;height:50vh;margin:0a
Stella981 Stella981
4年前
Python+Selenium自动化篇
本篇文字主要学习selenium定位页面元素的集中方法,以百度首页为例子。0.元素定位方法主要有:id定位:find\_element\_by\_id('')name定位:find\_element\_by\_name('')class定位:find\_element\_by\_class\_name(''
Stella981 Stella981
4年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Wesley13 Wesley13
4年前
Unity横屏
Android下发现Unity里面的Player设置,并不能完全有效,比如打开了自动旋转,启动的时候还是会横屏,修改XML添加以下代码<applicationandroid:icon"@drawable/ic\_launcher"                    android:label"@string/app\_name"
Stella981 Stella981
4年前
Django中Admin中的一些参数配置
设置在列表中显示的字段,id为django模型默认的主键list_display('id','name','sex','profession','email','qq','phone','status','create_time')设置在列表可编辑字段list_editable
Wesley13 Wesley13
4年前
CSS复习笔记二:浮动和清除浮动
 一、浮动的性质1、浮动的元素脱离标准文档流,并且可以设置宽度和高度。2、浮动的元素相互贴靠3、浮动的元素有“文字环绕”效果       含有图片的div浮动,段落不浮动,文字会环绕图片。4、div浮动了且没有设置宽度,那么将自动收缩为内容的宽度。浮动(脱标)的元素是不能把容器惩处高度的。二、浮动的清除
Python进阶者 Python进阶者
2年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这