IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 移动开发 -> JS电影选票 -> 正文阅读

[移动开发]JS电影选票

?

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
    <link rel="stylesheet" href="static.css">
</head>

<body>
    <div class="box">
        <div class="zuowei">
            <ul>
            </ul>
        </div>
        <div class="center">屏幕中央</div>
    </div>
    <script src="static.js"></script>
</body>

</html>
window.onload = function() {
    //根据输入的座位数目,动态生成li,附加到ul里面,最大值为30
    var ul = document.querySelector('.zuowei ul')
    var flag = []
    var a = 30
    for (i = 0; i < a; i++) {
        var li = document.createElement('li')
        li.className = 'listy'
        ul.appendChild(li)
        flag[i] = 0
        li.setAttribute('id', i)
    }
    var lis = document.querySelectorAll('li')
        //利用事件委托给每个li添加点击事件.因为是动态生成的li所以无法用事件委托.
        //上述错误。动态生成的元素可以使用addeventlistener来进行事件委托,注意书写格式
        // ul.addEventListener('click', function(e) {
        //         e.target.style.backgroundColor = 'pink'
        //     })
        // console.log(flag);

    for (i = 0; i < lis.length; i++) {
        lis[i].addEventListener('click', function() {
            var b = this.getAttribute('id')
                //   console.log(b);
            if (flag[b] == 0) {
                this.className = 'listy'
                this.innerText = '座位已选'
                this.style.backgroundColor = 'skyblue'
                flag[b] = 1
            } else if (flag[b] == 1) {
                this.className = 'listy'
                this.innerText = ''
                this.style.backgroundColor = ''
                flag[b] = 0
            }
        })
    }
}
.box {
    width: 1000px;
    height: 800px;
    border: 1px solid grey;
    margin: 100px auto
}

.zuowei {
    width: 800px;
    height: 600px;
    margin: 0 auto
}

.center {
    width: 600px;
    height: 120px;
    font-size: 35px;
    border: 1px solid grey;
    margin: 40px auto;
    text-align: center;
    line-height: 120px;
}

ul {
    display: block;
    width: 800px;
    height: 500px;
}

.listy {
    /* display: inline-block; */
    list-style: none;
    float: left;
    width: 130px;
    height: 80px;
    background-color: grey;
    font-size: 25px;
    text-align: center;
    line-height: 80px;
    margin-top: 10px;
    margin-right: 13px;
    padding: 0px;
}

注意:如果将里面li元素的css属性改为行内块:

?

当点击后,会出现位置下移,?

vertical-align:’inline-block'依赖型元素

vertical-align属性。按照 w3school 上的解释:该属性定义行内元素的基线相对于该元素所在行的基线的垂直对齐方式,默认值为 baseline。

行内元素基线---所在行基线

辨别“行内元素的基线”与“行内元素所在行的基线”

“行内元素的基线”就是我们在基线中所说的:字母“x”的下端沿。我们在一个元素里写一个"x",它的下沿就是这个元素的基线。

可以看到,元素的基线和元素的底线之间是有间距的(上图"x"和红色底边之间),这部分留给"g"、"j"等字母或中文字符

那么什么是“该元素所在行的基线”?一句话概括就是:所在行的基准元素在对齐时所依据的那条线。我们把该元素所在行当作父元素,这句话表明,父元素的基线是由它的一个子元素——基准元素决定的基准元素依据哪条线对齐,父元素的基线就是哪条线

  • 行内元素的基线:是它的自有属性,当该元素没有子元素而只有文字时,取字母"x"的下端沿
  • 行内元素的父元素的基线:来自于它的一个子元素——基准元素,基准元素依据哪条线对齐,父元素的基线就是哪条线

如果基准元素采用中线对齐,那么所在行的基线就是基准元素的中线;如果基准元素采用顶线对齐,那么所在行的基线就是基准元素的顶线。

有一个元素属于inline或是inline-block水平,其身上的vertical-align属性才会起作用。

vertical-align:middle属性的表现与否,仅仅与其父标签有关,至于我们通常看到的与后面的文字垂直居中显示那都是假象!

参考:

我对CSS vertical-align的一些理解与认识(一) ? 张鑫旭-鑫空间-鑫生活

指定元素的垂直对齐方式,只对行内元素有效,就是display的属性为inline、inline-block、inline-table,再加一个table-cell (<td></td>)的元素,

line-height行高的定义就是两基线的间距;vertical-align的默认值就是基线;其他中线顶线一类的定义也离不开基线;基线甚至衍生出了:

行高是?上行线高度+上行线到下行线之间的高度 +下行线高度

当一个盒子的height=line-height时,文字就会垂直居中显示了

当行高小于height时,文字就偏上显示,(因为行高不够所以偏上显示)

当行高大于height时,文字就偏下显示,(因为行高冒了,所以文字就偏下显示)

当为元素设置设置float属性或position:absolute属性(可以试验一下),块级元素和内联元素都会脱离文档流,同时display属性都变为inline-block。此时,元素可以设置大小,并能在同一行显示。

案例中要保持位置不变的话需要给vertical-align设置为text-top属性

?

?

主要原因在于:

对于有内容的inline-block,其基线为最后一行文本基线所在的位置

而对于空白的inline-block,其基线为margin bottom边缘所在位置,即底部边缘。

注意:

对于内联元素各种想得通或者想不通的行为表现,基本上都可以用vertical-alignline-height来解释,以及进行行为矫正

  移动开发 最新文章
Vue3装载axios和element-ui
android adb cmd
【xcode】Xcode常用快捷键与技巧
Android开发中的线程池使用
Java 和 Android 的 Base64
Android 测试文字编码格式
微信小程序支付
安卓权限记录
知乎之自动养号
【Android Jetpack】DataStore
上一篇文章      下一篇文章      查看所有文章
加:2022-04-30 08:51:08  更:2022-04-30 08:52:35 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 23:51:49-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码