前端布局与交互实现技巧

news2025/2/10 7:37:19

前端布局与交互实现技巧

1. 保持盒子在中间位置

在网页设计中,经常需要将某个元素居中显示。以下是一种常见的实现方式:

HTML 结构

<!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>居中盒子</title>
    <link rel="stylesheet" href="./css/login.css">
</head>
<body>
    <div class="head">
        <div class="main"></div>
    </div>
</body>
</html>

CSS 样式

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;
}

实现原理

  • 使用 position: absolute 将盒子定位为绝对定位。

  • 设置 lefttoprightbottom 都为 0,使盒子撑满父容器。

  • 通过 margin: auto 实现居中效果。


2. 鼠标经过显示多选项

在导航栏中,常常需要实现鼠标经过时显示下拉菜单的效果。

HTML 结构

<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>

CSS 样式

.pull {
    position: relative;
}

.pull-ul {
    position: absolute;
    display: none;
}

.pull:hover .pull-ul {
    display: block;
}

实现原理

  • 父元素 pull 使用相对定位,子元素 pull-ul 使用绝对定位。

  • 默认情况下,pull-ul 隐藏,当鼠标经过 pull 时,显示 pull-ul


3. 两栏布局(数据单)

两栏布局是常见的网页布局方式,通常用于侧边栏和内容区域的划分。

HTML 结构

<!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>两栏布局</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>

CSS 样式

* {
    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;
}

实现原理

  • 左侧栏使用浮动布局,右侧栏通过 padding-left 留出左侧栏的宽度。

  • 确保页面放大时不会留有空隙。


4. 三栏布局——普通

三栏布局是网页设计中常见的布局方式,通常用于左右侧边栏和中间内容区域的划分。

HTML 结构

<!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>三栏布局</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>

CSS 样式

* {
    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;
}

实现原理

  • 左右栏使用绝对定位,中间栏通过 padding 留出左右栏的宽度。


5. 三栏布局——圣杯布局

圣杯布局是一种经典的三栏布局方式,中间栏优先渲染。

HTML 结构

<!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>圣杯布局</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>

CSS 样式

* {
    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;
}

实现原理

  • 中间栏优先渲染,左右栏通过负边距和相对定位实现布局。


6. 三栏布局——双飞翼布局

双飞翼布局是圣杯布局的改进版,通过增加一个内部容器来实现布局。

HTML 结构

<!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>双飞翼布局</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>

CSS 样式

* {
    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;
}

实现原理

  • 中间栏通过内部容器的 margin 留出左右栏的宽度。


7. 拖动的模态框

模态框是网页中常见的交互组件,以下是一个可拖动的模态框实现。

JavaScript 实现

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'
})

// 3. 实现模态框拖动
title.addEventListener('mousedown', function (e) {
    var x = e.pageX - loginEle.offsetLeft
    var y = e.pageY - loginEle.offsetTop
    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)
    })
})

实现原理

  • 通过 mousedownmousemovemouseup 事件实现模态框的拖动。

  • 计算鼠标在模态框内的坐标,动态设置模态框的位置。


8. jQuery 实现五角星评分

五角星评分是常见的用户交互组件,以下是一个简单的实现。

HTML 结构

<ul class="comment">
    <li>☆</li>
    <li>☆</li>
    <li>☆</li>
    <li>☆</li>
    <li>☆</li>
</ul>

JavaScript 实现

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

    // 鼠标经过时,当前和之前的星星变为实心
    $('.comment li').on('mouseenter', function () {
        $(this)
            .text(wjx_sel)
            .prevAll('li')
            .text(wjx_sel)
            .end()
            .nextAll('li')
            .text(wjx_none)
    })

    // 鼠标离开时,根据是否有选中状态决定星星样式
    $('.comment li').on('mouseleave', function () {
        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')
    })
})

实现原理

  • 通过 mouseentermouseleaveclick 事件实现五角星的动态效果。

  • 使用 current 类记录用户选择的星星。


以上是一些常见的前端布局和交互实现技巧,希望对您的开发工作有所帮助!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2295690.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

乘 DeepSeek 之风,破工作传统之浪,驶向智能高效新航道⭐

引言&#xff1a;当工作场景遭遇认知革命 在数字化转型的浪潮中&#xff0c;人工智能正以指数级速度重塑职场生态。DeepSeek作为国内领先的认知智能平台&#xff0c;其技术突破已超越简单的信息检索工具&#xff0c;正在演变为职场人的"第二大脑"。本文将系统解构De…

Chirpy3D:用于创意 3D 鸟类生成的连续部分潜在特征

Chirpy3D框架可以将细粒度的2D图像理解提升至3D生成的全新境界。当前的3D生成方法往往只关注于重构简单的对象&#xff0c;缺乏细致的特征和创造性。Chirpy3D通过结合多视角扩散模型和连续的部件潜在空间&#xff0c;能够生成全新且合理的3D鸟类模型。该系统不仅能够保持细致的…

viem库

viem是一个用于和以太坊进行交互的javascript库&#xff0c;它提供了简单的API进行智能合约的读取和写入操作&#xff0c;你可以使用它来与区块链上智能合约进行交互&#xff0c;查询链上数据等。 基本功能 1&#xff0c;创建公有客户端 createPublicClient 可以创建一个链接…

【每日一题 | 2025】2.3 ~ 2.9

个人主页&#xff1a;GUIQU. 归属专栏&#xff1a;每日一题 文章目录 1. 【2.3】P8784 [蓝桥杯 2022 省 B] 积木画2. 【2.4】P8656 [蓝桥杯 2017 国 B] 对局匹配3. 【2.5】[ABC365D] AtCoder Janken 34. 【2.6】P8703 [蓝桥杯 2019 国 B] 最优包含5. 【2.7】P8624 [蓝桥杯 2015…

整数拆分cpp

题目如下 思路&#xff1a;根据数论知识&#xff0c;要使乘积最大化&#xff0c;将该数拆分成3和2即可&#xff0c;一直对该数进行减三操作&#xff0c;直到该数小于等于4即可 代码如下 谢谢观看

DeepSeek之Api的使用(将DeepSeek的api集成到程序中)

一、DeepSeek API 的收费模式 前言&#xff1a;使用DeepSeek的api是收费的 免费版&#xff1a; 可能提供有限的免费额度&#xff08;如每月一定次数的 API 调用&#xff09;&#xff0c;适合个人开发者或小规模项目。 付费版&#xff1a; 超出免费额度后&#xff0c;可能需要按…

如何在WPS和Word/Excel中直接使用DeepSeek功能

以下是将DeepSeek功能集成到WPS中的详细步骤&#xff0c;无需本地部署模型&#xff0c;直接通过官网连接使用&#xff1a;1. 下载并安装OfficeAI插件 &#xff08;1&#xff09;访问OfficeAI插件下载地址&#xff1a;OfficeAI助手 - 免费办公智能AI助手, AI写作&#xff0c;下载…

神经网络常见激活函数 6-RReLU函数

文章目录 RReLU函数导函数函数和导函数图像优缺点pytorch中的RReLU函数tensorflow 中的RReLU函数 RReLU 随机修正线性单元&#xff1a;Randomized Leaky ReLU 函数导函数 RReLU函数 R R e L U { x x ≥ 0 a x x < 0 \rm RReLU \left\{ \begin{array}{} x \quad x \ge 0…

【分布式理论7】分布式调用之:服务间的(RPC)远程调用

文章目录 一、RPC 调用过程二、RPC 动态代理&#xff1a;屏蔽远程通讯细节1. 动态代理示例2. 如何将动态代理应用于 RPC 三、RPC序列化与协议编码1. RPC 序列化2. RPC 协议编码2.1. 协议编码的作用2.2. RPC 协议消息组成 四、RPC 网络传输1. 网络传输流程2. 关键优化点 一、RPC…

【Maven】项目管理工具-Maven

目录 1. Maven简介 1.1 项目管理 1.2 项目构建 1.3 项目构建工具 1.4 Maven的四大特征 1.4.1 依赖管理系统 1.4.2 多模块构建 1.4.3 一致的项目结构 1.4.4 一致的构建模型和插件机制 1.5 Maven模型 ​编辑 2.maven的安装配置 2.1 Maven的安装配置 2.1.1检测jdk的版…

ASP.NET Core WebSocket、SignalR

目录 WebSocket SignalR SignalR的基本使用 WebSocket WebSocket基于TCP协议&#xff0c;支持二进制通信&#xff0c;双工通信。性能和并发能力更强。WebSocket独立于HTTP协议&#xff0c;不过我们一般仍然把WebSocket服务器端部署到Web服务器上&#xff0c;因为可以借助HT…

【学术投稿】第五届计算机网络安全与软件工程(CNSSE 2025)

重要信息 官网&#xff1a;www.cnsse.org 时间&#xff1a;2025年2月21-23日 地点&#xff1a;中国-青岛 简介 第五届计算机网络安全与软件工程&#xff08;CNSSE 2025&#xff09;将于2025年2月21-23日在中国-青岛举行。CNSSE 2025专注于计算机网络安全、软件工程、信号处…

26~31.ppt

目录 26.北京主要的景点 题目 解析 27.创新产品展示及说明会 题目​ 解析 28.《小企业会计准则》 题目​ 解析 29.学习型社会的学习理念 题目​ 解析 30.小王-产品展示信息 题目​ 解析 31.小王-办公理念-信息工作者的每一天 题目​ 解析 26.北京主要的景点…

网络工程师 (28)IEEE802标准

前言 IEEE 802标准是由电气和电子工程师协会&#xff08;IEEE&#xff09;制定的一组局域网&#xff08;LAN&#xff09;和城域网&#xff08;MAN&#xff09;标准&#xff0c;定义了网络中的物理层和数据链路层。 一、起源与背景 IEEE 802又称为LMSC&#xff08;LAN/MAN Stand…

背包问题1

核心&#xff1a; // f[i][j] 表示只看前i个物品&#xff0c;总体积是j的情况下&#xff0c;总价值是多少 //res maxx(f[n][]0-v] //f[i][j]: //1 不选第i个物品 f[i][j] f[i-1][j] //2 选第i个物品 f[i][j] f[i-1][j-v[i]] w[i]

Spring 中的设计模式详解

控制反转(IoC)和依赖注入(DI) IoC(Inversion of Control,控制反转) 是 Spring 中一个非常非常重要的概念&#xff0c;它不是什么技术&#xff0c;而是一种解耦的设计思想。IoC 的主要目的是借助于“第三方”(Spring 中的 IoC 容器) 实现具有依赖关系的对象之间的解耦(IOC 容器…

人类的算计与机器的算计

近日&#xff0c;国外一视频网站博主通过设定&#xff0c;使DeepSeek和ChatGPT开展了一场国际象棋对弈。前十分钟双方在正常对弈&#xff0c;互有输赢&#xff0c;且ChatGPT逐渐占优。随后DeepSeek突然以对话方式告诉ChatGPT&#xff0c;国际象棋官方刚刚更新了比赛规则&#x…

7 使用 Pydantic 验证 FastAPI 的请求数据

FastAPI 是一个快速、现代的 Web 框架&#xff0c;它提供了自动生成 OpenAPI 文档的功能&#xff0c;支持 Pydantic 模型进行请求和响应数据的验证。Pydantic 提供了强大的数据验证功能&#xff0c;可以帮助你确保请求的有效性&#xff0c;自动进行数据转换&#xff0c;并生成详…

U3D支持webgpu阅读

https://docs.unity3d.com/6000.1/Documentation/Manual/WebGPU-features.html 这里看到已经该有的差不多都有了 WOW VFX更是好东西 https://unity.com/cn/features/visual-effect-graph 这玩意儿化简了纯手搓一个特效的流程 如果按原理说就是compute shader刷position&#…

Mac安装配置使用nginx的一系列问题

brew安装nginx https://juejin.cn/post/6986190222241464350 使用brew安装nginx&#xff0c;如下命令所示&#xff1a; brew install nginx 如下图所示&#xff1a; 2.查看nginx的配置信息&#xff0c;如下命令&#xff1a; brew info nginxFrom:xxx 这样的&#xff0c;是n…