当前位置: 首页 > article >正文

前端技巧汇总

保持盒子在中间位置:

中间盒子设置位绝对定位

上下左右都设置为0

margin为auto中间

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="./css/login.css">
</head>
<body>
    <div class="head">
        <div class="main">

        </div>
    </div>
</body>
</html>
html,
body {
    height: 100%;
}

.head {
    width: 100%;
    height: 100%;
    background-color: pink;
}

.head .main {
    position: absolute;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    width: 300px;
    height: 200px;
    margin: auto;
    background-color: #fff;
    border-radius: 10px;
}

鼠标经过显示多选项:

pull 用相对定位

pull-ul 用绝对定位 不占位置

采用:
<ul class="left fl">
    <li class="pull">
        <a href="#">
            移动客户端
        </a>
        <ul class="pull-ul">
            <li><a href="#">新浪微博</a></li>
            <li><a href="#">新浪微博</a></li>
            <li><a href="#">新浪微博</a></li>
            <li><a href="#">新浪微博</a></li>
            <li><a href="#">新浪微博</a></li>
            <li><a href="#">新浪微博</a></li>
        </ul>
    </li>
</ul>

两栏布局(数据单):

页面实现贴边,不会因为放大而留有空隙

设置整个大盒子

分为头部和主体部分,上下各百分之几

主体部分左边设置宽度和高度,右边仅设置高度

左边设置浮动,右边内边距为左边宽度,才能将字体显示出来

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="./css/t_index.css">
</head>
<body>
    <div class="main">
        <div class="head"></div>
        <div class="container">
            <div class="left"></div>
            <div class="right">123455</div>
        </div>
    </div>
</body>
</html>
* {
    margin: 0;
    padding: 0;
}

html,
body {
    height: 100%;
}

.main {
    height: 100%;
    background-color: pink;
}

.main .head {
    height: 10%;
    background-color: purple;
}

.main .container {
    height: 90%;
    background-color: aquamarine;
}

.main .container > .left {
    float: left;
    width: 200px;
    height: 100%;
    background-color: bisque;
}

.main .container > .right {
    padding-left: 200px;
    height: 100%;
    background-color: blue;
}

三栏布局——普通

设置个主盒子占整个页面

左右栏高度占整个页面高度,设置为绝对定位,注意,定位距离顶部top为0

左右盒子定位各往两侧定位

中间盒子不设置宽度,内边距为左右盒子的宽度

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="./css/r_index_1.css">
</head>
<body>
    <div class="main">
        <div class="left"></div>
        <div class="container"></div>
        <div class="right"></div>
    </div>
</body>
</html>
* {
    margin: 0;
    padding: 0;
}

html,
body {
    height: 100%;
}

.main {
    height: 100%;
    background-color: aqua;
}

.main > .left,
.main > .right {
    position: absolute;
    top: 0;
    width: 200px;
    height: 100%;
    background-color: red;
}

.left {
    left: 0;
}
.right {
    right: 0;
}
.main > .container {
    padding: 0 200px;
    height: 100%;
    background-color: aquamarine;
}

三栏布局——圣杯布局

中间盒子,将主体写在左右盒子前面

三个盒子都需设置为左浮动,中间盒子需设置宽度和高度100%

将做盒子左外边距设置为负的100%,右边盒子设置为负的自身宽度

总体左右外边距为左右两盒子的宽度

对左右盒子设置相对定位

分别向左右移动自身的宽度

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="./css/r_index_2.css">
</head>
<body>
    <div class="main">
        <div class="container">121121414</div>
        <div class="left"></div>
        <div class="right"></div>
    </div>
</body>
</html>
* {
    margin: 0;
    padding: 0;
}

html, 
body {
    height: 100%;
}

.main {
    height: 100%;
    margin: 0 200px;
}

.main .container {
    float: left;
    width: 100%;
    height: 100%;
    background-color: purple;
}

.main .left {
    float: left;
    height: 100%;
    width: 200px;
    background-color: bisque;
    margin-left: -100%;
    position: relative;
    left: -200px;
}

.main .right {
    float: left;
    height: 100%;
    width: 200px;
    background-color: blue;
    margin-left: -200px;
    position: relative;
    right: -200px;
}

三栏布局——双飞翼布局

中间盒子,将主体写在左右盒子前面

三个盒子都需设置为左浮动,中间盒子需设置宽度和高度100%

将做盒子左外边距设置为负的100%,右边盒子设置为负的自身宽度

在中间盒子内部在设置个div

左右边距为左右盒子的宽度

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>Document</title>
    <link rel="stylesheet" href="./css/r_index_3.css">
</head>
<body>
    <div class="main">
        <div class="container">
            <div class="conf">1123114</div>
        </div>
        <div class="left"></div>
        <div class="right"></div>
    </div>
</body>
</html>
* {
    margin: 0;
    padding: 0;
}

html,
body {
    height: 100%;
}

.main {
    height: 100%;
    background-color: antiquewhite;
}

.main .container {
    float: left;
    width: 100%;
    height: 100%;
    background-color: aqua;
}

.main .container .conf {
    margin-left: 200px;
    margin-right: 200px;
}

.main .left {
    float: left;
    width: 200px;
    height: 100%;
    background-color: aquamarine;
    margin-left: -100%;
}

.main .right {
    float: left;
    width: 200px;
    height: 100%;
    background-color: blue;
    margin-left: -200px;
}

拖动的模态框:

1点击弹出层,会弹出模态框,并且显示灰色半透明的遮罩层

​ 2:点击关闭按钮,,关闭模态框 并且关闭灰色半透明遮罩层

​ 3:鼠标放到模态框最上面一行,可以按住鼠标拖拽模态框在页面中移动

​ 4:鼠标松开,可以停止拖动模态框移动

​ 在页面中拖拽的原理:

​ 鼠标按下并且移动,之后松开鼠标

​ 鼠标按下mousedown 鼠标移动 mousemove 鼠标松开mouseup

​ 拖拽:鼠标移动的过程中,获取最新的值赋值给模态框的left和top值,模态框就可以跟着鼠标移动

​ 鼠标按下触发的事件源 是最上面一行, id=“title”

​ 鼠标的坐标-鼠标在盒子内 的坐标 就是模态框真正的位置

​ 鼠标按下 得到鼠标在盒子的坐标

​ 鼠标移动 设置模态框的位置 鼠标的坐标-鼠标在盒子内 的坐标 移动事件要写在按下事件里面

​ 鼠标松开 停止拖拽,让移动事件解除

var loginEle = document.querySelector('#login')
var mask = document.querySelector('.login-bg')

var linkEle = document.querySelector('#link')

var closeBtn = document.querySelector('#closeBtn')

var title = document.querySelector('#title')

// 1点击弹出层,会弹出模态框,并且显示灰色半透明的遮罩层
linkEle.addEventListener('click', function () {
    loginEle.style.display = 'block'
    mask.style.display = 'block'
})

// 2:点击关闭按钮,,关闭模态框 并且关闭灰色半透明遮罩层
closeBtn.addEventListener('click', function () {
    loginEle.style.display = 'none'
    mask.style.display = 'none'
})

// 1) 鼠标按下  获取鼠标在盒子内的坐标
title.addEventListener('mousedown', function (e) {
    var x = e.pageX - loginEle.offsetLeft
    var y = e.pageY - loginEle.offsetTop
    // 2)鼠标移动, 鼠标的坐标-鼠标在盒子内 的坐标 就是模态框的left和top的值
    document.addEventListener('mousemove', move)
    function move(e) {
        loginEle.style.left = e.pageX - x + 'px'
        loginEle.style.top = e.pageY - y + 'px'
    }
    // 鼠标松开,移除移动事件
    document.addEventListener('mouseup', function () {
        document.removeEventListener('mousemove', move)
    })
})

jQuery实现五角星案例:

绑定鼠标进入事件,鼠标到其中一个位置,将本身变为实心的,并将之前的元素选取出来变为实心,当点击摸一个位置,给当前位置设置个类,当鼠标移除后,查询是否有这个类,有的话就把当前和前面的元素变为实心,没有的话就全部变成空心

$(function () {
    var wjx_none = '☆'
    var wjx_sel = '★'

    // 鼠标放上去当前的li和之前所有的li内容全部变为实心五角星  移开变为空心
    $('.comment li').on('mouseenter', function () {
        // 当前的变为实心
        // $(this).text(wjx_sel).prevAll('li').text(wjx_sel)
        // $(this).nextAll('li').text(wjx_none)

        // end()  结束之后再使用,相当于重新一行再次使用this
        $(this)
            .text(wjx_sel)
            .prevAll('li')
            .text(wjx_sel)
            .end()
            .nextAll('li')
            .text(wjx_none)
    })

    $('.comment li').on('mouseleave', function () {
        // current用来记录离开时的星星
        if ($('li.current').length === 0) {
            $('.comment li').text(wjx_none)
        } else {
            $('li.current')
                .text(wjx_sel)
                .prevAll('li')
                .text(wjx_sel)
                .end()
                .nextAll('li')
                .text(wjx_none)
        }
    })

    $('.comment li').on('click', function () {
        $(this).attr('class', 'current').siblings('li').removeAttr('class')
    })
})
<!-- ★ -->
<ul class="comment">
    <li></li>
    <li></li>
    <li></li>
    <li></li>
    <li></li>
</ul>

http://www.kler.cn/news/355092.html

相关文章:

  • 驱动总裁免登陆单文件版
  • 网页前端开发之HTML入门篇:标题标签 heading
  • Leetcode 1223 LCA of Deepest TreeNode
  • 带头结点的单链表按数据域从小到大进行选择排序的算法
  • 生成器和迭代器
  • Mysql 5.7 安装与卸载(非常详细)
  • 【原创】java+springboot+mysql智能农村管理系统设计与实现
  • OpenUAV:首个专为现实无人机视觉语言导航设计的大规模轨迹数据集,由大约 12k 个轨迹组成,涵盖了多种环境和复杂的飞行动态。
  • laravel清除不同缓存
  • 疾病防控|基于springBoot的疾病防控综合系统设计与实现(附项目源码+论文+数据库)
  • 海康相机
  • 通信学习干货:运营商为什么要大力推广FTTR?
  • 2. 继承Mono的单例模式基类
  • 一文搞懂模型倍率怎么计算的,以及模型分组倍率原理!
  • Java | Leetcode Java题解之第480题滑动窗口中位数
  • 决策树C4.5算法详解及实现
  • openEuler-22.03-SP4离线编译安装ZLMediaKit
  • A Survey on 3D Gaussian Splatting 整理
  • XML 和 SimpleXML 简介
  • linux环境下的程序设计与git操作