html5学习-<area>标签

本文详细介绍了HTML中&lt;area&gt;标签的使用方法,包括如何定义图像映射中的不同形状区域及其坐标设置,适用于创建交互式的图像链接。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

定义和用法  <area> 标签定义图像映射中的区域。

<img src ="planets.gif" alt="Planets" usemap ="#planetmap" />
 <map id ="planetmap">
   <area shape ="rect" coords ="0,0,82,126" href ="sun.htm" alt="Sun" />
   <area shape ="circle" coords ="90,58,3" href ="mercur.htm" alt="Mercury" />
   <area shape ="circle" coords ="124,58,8" href ="venus.htm" alt="Venus" />
</map>

shape:规定区域的形状。
 1.circle: 圆形
 2.polygon:多边形
 3.rectangle:四边形

coords: 定义可点击区域的坐标。
 1.shape:circle; coords='x,y,z'; x,y指定圆心的位置,z以像素为单位的圆形半径
 2.shape:polygon; coords="x1,y1,x2,y2,x3,y3,..." 每一对 "x,y" 坐标都定义了多边形的一个顶点("0,0" 是图像左上角的坐标)。定义三角形至少需要三组坐标;高纬多边   形则需要更多数量的顶点。多边形会自动封闭,因此在列表的结尾不需要重复第一个坐标来闭合整个区域。
 3.shape="rectangle",coords="x1,y1,x2,y2" 第一个坐标是矩形的一个角(左上角)的顶点坐标,另一个坐标是对角(右下角)的坐标

 注意:
   如果某个 area 标签中的坐标和其他区域发生了重叠,会优先采用最先出现的 area 标签。浏览器会忽略超过图像边界范围之外的坐标。

<!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="utf-8"> <!-- 页面标题,可根据您的主题修改 --> <title>我的项目 - 角色介绍</title> <!-- 设置favicon图标 --> <link rel="icon" href="img/favicon.png" sizes="16x16"> <!-- 内部CSS样式 --> <style> /* 全局样式 */ html, body { margin: 0; font-family: Arial, sans-serif; background-color: black; /* 背景图片,可替换为您的图片 */ background-image: url(img/background.png); background-size: cover; background-position: center; background-repeat: no-repeat; text-align: center; overflow-x: hidden; } /* 头部样式 */ header { padding: 10px; color: #ecf0f1; /* 头部背景图片 */ background-image: url(img/header-bg.png); background-repeat: repeat-x; background-position: left bottom; display: flex; justify-content: space-between; align-items: center; } header h1 { margin-left: 20px; font-size: 24px; } .button-area { margin-right: 20px; } /* 导航按钮样式 */ .button { display: inline-block; text-align: center; padding: 8px; width: 100px; text-decoration: none; color: black; /* 按钮背景图片 */ background: url(img/button-bg.png) no-repeat center; background-size: contain; transition: all 0.2s ease-in-out; } .button:hover { transform: scale(1.1); opacity: 0.5; } /* 回到顶部按钮 */ #to-top { position: fixed; bottom: 20px; right: 20px; width: 64px; height: 64px; background: url(img/to-top.png) no-repeat center; background-size: contain; z-index: 1000; transition: all 0.1s ease-in-out; } #to-top:hover { opacity: 0.8; } /* 宣传区域 */ #hero { position: relative; height: 500px; margin: auto; /* 海报背景图片 */ background: url(img/hero-bg.png) no-repeat center top; background-size: cover; } #hero-logo { max-width: 200px; position: absolute; bottom: 20px; left: 50%; transform: translateX(-50%); } #buy-now { position: absolute; bottom: 100px; right: 50px; width: 200px; height: 100px; background: url(img/buy-now.png) no-repeat center; background-size: contain; z-index: 10; transition: opacity 0.1s ease-in-out; } #buy-now:hover { opacity: 0.8; } /* 内容介绍区域 */ .intro { width: 800px; margin: 50px auto; padding: 20px; /* 介绍区域背景图片 */ background: url(img/intro-bg.png) no-repeat center; background-size: contain; color: white; } .intro h2 { font-size: 28px; } /* 角色展示区域 */ .characters { width: 800px; margin: 50px auto; } .character { display: none; /* 默认隐藏所有角色 */ background: url(img/character-bg.png) no-repeat center; background-size: contain; width: 800px; height: 400px; padding: 20px; color: white; text-align: left; } .character.active { display: block; /* 显示当前选中的角色 */ } .character img { max-width: 150px; margin-right: 20px; vertical-align: top; } .character h3 { display: inline-block; font-size: 24px; margin: 0; } .character p { font-size: 16px; margin-top: 10px; } /* 角色切换按钮 */ .character-switch { display: flex; justify-content: center; gap: 10px; margin: 20px 0; } .switch-btn { width: 50px; height: 50px; background-size: contain; cursor: pointer; transition: opacity 0.2s ease-in-out; } .switch-btn:hover { opacity: 0.7; } /* 页脚 */ footer { color: white; text-align: center; padding: 20px; background: url(img/footer-bg.png) no-repeat center; background-size: cover; } footer img { max-width: 100px; margin: 10px; } </style> </head> <body> <!-- 回到顶部按钮 --> <a id="to-top" href="#"></a> <!-- 头部导航 --> <header> <h1>我的项目</h1> <div class="button-area"> <a href="#" class="button">首页</a> <a href="#" class="button">购买</a> <a href="#" class="button">关于</a> </div> </header> <!-- 宣传区域 --> <div id="hero"> <img id="hero-logo" src="img/logo.png" alt="项目标志"> <a id="buy-now" href="#"></a> </div> <!-- 内容介绍 --> <div class="intro"> <h2>项目介绍</h2> <p>这是一个示例项目,介绍您的核心内容或故事背景。您可以在这里添加关于项目、游戏或主题的描述,吸引用户继续探索。</p> </div> <!-- 角色展示 --> <div class="characters"> <h2>角色介绍</h2> <!-- 角色1 --> <div class="character active" id="char1"> <img src="img/character1.png" alt="角色1"> <div> <h3>角色1</h3> <p>角色1的描述,介绍其背景、特点或故事。替换为您的内容。</p> </div> </div> <!-- 角色2 --> <div class="character" id="char2"> <img src="img/character2.png" alt="角色2"> <div> <h3>角色2</h3> <p>角色2的描述,介绍其背景、特点或故事。替换为您的内容。</p> </div> </div> <!-- 角色3 --> <div class="character" id="char3"> <img src="img/character3.png" alt="角色3"> <div> <h3>角色3</h3> <p>角色3的描述,介绍其背景、特点或故事。替换为您的内容。</p> </div> </div> <!-- 角色切换按钮 --> <div class="character-switch"> <img src="img/switch1.png" class="switch-btn" onclick="showCharacter('char1')" alt="角色1按钮"> <img src="img/switch2.png" class="switch-btn" onclick="showCharacter('char2')" alt="角色2按钮"> <img src="img/switch3.png" class="switch-btn" onclick="showCharacter('char3')" alt="角色3按钮"> </div> </div> <!-- 页脚 --> <footer> <div> <img src="img/logo1.png" alt="公司标志1"> <img src="img/logo2.png" alt="公司标志2"> </div> <p>© 2025 我的项目。版权所有。</p> </footer> <!-- JavaScript for character switching --> <script> function showCharacter(charId) { // 隐藏所有角色 document.querySelectorAll('.character').forEach(char => { char.classList.remove('active'); }); // 显示选中的角色 document.getElementById(charId).classList.add('active'); } </script> </body> </html> 帮我为这段代码的每一行增加更加详细的注释(方便初学者理解代码)
最新发布
05-29
<!-- 权限管理 --> <!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="../../layui/css/layui.css"> <link rel="stylesheet" href="../../css/diy.css"> <style> .layui-body { overflow-x: scroll; } </style> </head> <body> <div class="section1"> <!-- 内容主体区域 --> <div class="manu auth" style="padding: 15px;"> <form class="layui-form" action=""> <div class="form-input-box-t layui-form-item"> <div class="input-box"> <label class="layui-form-label">权限名</label> <div class="layui-input-block input-i block"> <input type="text" name="mod_name" required lay-verify="required" autocomplete="off" class="layui-input"> <!--通过lay-verify="required"实现输入验证,确保必填字段非空--> </div> </div> <div class="input-box"> <!--查询部分--> <label class="layui-form-label">用户组</label> <div class="layui-input-block select block"> <select name="user_group" lay-filter="required" id="user_group"> <option value=""></option> </select> </div> </div> <div class="input-box"> <label class="layui-form-label">添加权限</label> <div class="layui-input-block select block"> <select name="add" lay-filter="required"> <option value=""></option> <option value="0">无</option> <option value="1">有</option> </select> </div> </div> <div class="input-box"> <label class="layui-form-label">修改权限</label> <div class="layui-input-block select block"> <select name="set" lay-filter="required"> <option value=""></option> <option value="0">无</option> <option value="1">有</option> </select> </div> </div> <div class="input-box"> <label class="layui-form-label">删除权限</label> <div class="layui-input-block select block"> <select name="del" lay-filter="required"> <option value=""></option> <option value="0">无</option> <option value="1">有</option> </select> </div> </div> <div class="input-box"> <label class="layui-form-label">查询权限</label> <div class="layui-input-block select block"> <select name="get" lay-filter="required"> <option value=""></option> <option value="0">无</option> <option value="1">有</option> </select> </div> </div> </div> </form> <div class="buts"> <button type="button" class="layui-btn layui-btn-normal" id="inquire"><span>查询</span></button> <button type="button" class="layui-btn layui-btn-normal" id="reset"><span>重置</span></button> </div> <div class="Customize-the-box"> <div class="circle"></div> <div class="circle"></div> <div class="card-inner"></div> </div> </div> <h1>数据列表</h1> <div class="table"> <table class="layui-hide" id="newsClassification" lay-filter="newsClassification"></table> <script type="text/html" id="toolbarDemo"> <div class="layui-btn-container"> <button class="layui-btn layui-btn-sm" lay-event="add">修改</button> </div> </script> </div> </div> <script src="../../layui/layui.js"></script> <script src="../../js/axios.min.js"></script> <script src="../../js/index.js"></script> <script src="../../js/base.js" charset="utf-8"></script> <script> var BaseUrl = baseUrl() layui.use(['element', 'layer', 'util'], function () { var element = layui.element , table = layui.table , layer = layui.layer , util = layui.util , $ = layui.$; let personInfo = JSON.parse(sessionStorage.personInfo) let user_group = personInfo.user_group let token = sessionStorage.token || null //头部事件 util.event('lay-header-event', { //左侧菜单事件 menuLeft: function (othis) { layer.msg('展开左侧菜单的操作', {icon: 0}); } , menuRight: function () { layer.open({ type: 1 , content: '<div style="padding: 15px;">处理右侧面板的操作</div>' , area: ['260px', '100%'] , offset: 'rt' //右上角 , anim: 5 , shadeClose: true }); } }); // table 事件 table.render({ elem: '#newsClassification' , toolbar: true , url: BaseUrl + '/api/auth/get_list' , headers: { 'x-auth-token': token, 'Content-Type': 'application/json' } ,limits: [10] , page: { //支持传入 laypage 组件的所有参数(某些参数除外,如:jump/elem) - 详见文档 layout: ['limit', 'count', 'prev', 'page', 'next', 'skip'] //自定义分页布局 //,curr: 5 //设定初始在第 5 页 , groups: 1 //只显示 1 个连续页码 , first: false //不显示首页 , last: false //不显示尾页 } , cols: [[ {type: 'checkbox'} , {field: 'user_group', width: '10%', title: '用户组'} , {field: 'mod_name', width: '10%', title: '权限名称', templet: function (d) { if (d.path.replace('/'+d.table_name+'/','')=='table') { return "<div>"+d.mod_name+"后台列表</div>" } if (d.path.replace('/'+d.table_name+'/','')=='view') { return "<div>"+d.mod_name+"后台详情</div>" } if (d.path.replace('/'+d.table_name+'/','')=='list') { return "<div>"+d.mod_name+"前台列表</div>" } if (d.path.replace('/'+d.table_name+'/','')=='details') { return "<div>"+d.mod_name+"前台详情</div>" } if (d.path.replace('/'+d.table_name+'/','')=='edit') { return "<div>"+d.mod_name+"前台编辑</div>" } } } , { field: 'add', width: '10%', title: '<span>添加</span>权限', templet: function (d) { if (d.add == '0') { return "<div>无</div>" } else { return "<div>有</div>" } } } , { field: 'del', width: '10%', title: '<span>删除</span>权限', templet: function (d) { if (d.del == '0') { return "<div>无</div>" } else { return "<div>有</div>" } } } , { field: 'set', width: '10%', title: '修改权限', templet: function (d) { if (d.set == '0') { return "<div>无</div>" } else { return "<div>有</div>" } } } , { field: 'get', width: '10%', title: '<span>查询</span>权限', templet: function (d) { if (d.get == '0') { return "<div>无</div>" } else { return "<div>有</div>" } } } , { field: 'create_time', width: '15%', title: '新增时间', sort: true, templet: "<div>{{layui.util.toDateString(d.create_time, 'yyyy-MM-dd HH:mm:ss')}}</div>" } , { field: 'update_time', width: '15%', title: '更新时间', sort: true, templet: "<div>{{layui.util.toDateString(d.update_time, 'yyyy-MM-dd HH:mm:ss')}}</div>" } , {field: 'operate', title: '操作', toolbar: "#toolbarDemo"} ]] , page: true, request: { limitName: 'size' }, response: { statusName: 'code', //规定返回/Back的状态码字段为code statusCode: 200 //规定成功的状态码味200 }, parseData: function (res) { return { "code": 200, "msg": "", "count": res.result.count, "data": res.result.list } }, where: {like: 0, size: 10} }); layui.table.on('tool(newsClassification)', function (obj) { //注:tool是工具条事件名,test是table原始容器的属性 lay-filter="对应的值" var data = obj.data; //获得当前行数据 var layEvent = obj.event; //获得 lay-event 对应的值(也可以是表头的 event 参数对应的值) var tr = obj.tr; //获得当前行 tr 的DOM对象 if (layEvent == "add") { let auth_id = data.auth_id // window.location = ('./view.html?' + auth_id) layopen_dateil('./view.html?' + auth_id) } }); // 请求参数: let request = {like: 0, size: 10, page: 1, mod_name: '', user_group: '',add:'',set:'',del:'',get:'',orderby: 'create_time desc'} // <span>重置</span>/Reset参数 let resetName = {like: 0, size: 10, page: 1, orderby: 'create_time desc'} fun('newsClassification', BaseUrl + '/api/auth/del', 'auth_id', request, resetName) async function get_list_user_group() { $.ajax({ url: BaseUrl + "/api/user_group/get_list", type: "get", async: false, success: function (data) { if (data && typeof data === 'string'){ data = JSON.parse(data); } if (data.result) { // 拿到单选框的父级节点 let select = document.querySelector("#user_group") let op1 = document.createElement('option') select.appendChild(op1) // 收集数据 长度 let count // 收集数据 数组 let arr = [] count = data.result.count arr = data.result.list for (let i = 0; i < arr.length; i++) { // 创建节点 let op = document.createElement('option') // 给节点赋值 op.innerHTML = arr[i].name op.value = arr[i].name // 新增/Add节点 select.appendChild(op) layui.form.render('select') } } } }); } get_list_user_group(); }); </script> </body> </html> 分析以上代码,哪个代码对应哪个功能就行,不要自己拓展
05-28
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值