如何用H5+CSS+JS写一个简单的招聘网站

大家好,我是猿码叔叔,一个 Java 语言开发者。应网友要求,写一个简单的招聘页面。由于技术原因,页面相对简单,朋友们可以选择性的阅读,如果对您有帮助,也可直接拿去使用,因为接下来除了闲言碎语还有源代码干货。

一、内容介绍

这个简单的招聘网站,具备简单的响应式功能。页面元素包含:横向菜单、职位搜索与选择、简历表格、轮播图。页面没有实现与后端交互的功能,后续有需要可以更新,包括更丰富的功能都可以持续更新与扩展。

二、谈谈我对响应式的理解

  • 布局

我们应当做好页面的布局设计。一般的网站布局都会大致分为 Header、Body 和 Footer 以及 Others 四个部分。对于前三个部分仍然可以再细分为相应的“块”,每个块包含相应要展示的内容。这些块可以是竖着排列,或者是横向并排排列,亦或是复杂的瀑布式排列。排列的布局应当符合人类的基本审美标准,比如对称、右重左轻等等。

  • 自适应调整

自适应调整就是根据不同的设备来调整页面的属性,达到不同的设备布局仍然排列有序,符合我们的审美标准。这一点是建立在我们事先做好了页面布局的工作。

常见的自适应调整,我们可以使用 @media、flex、grid 和 multiCol 来实现。具体的功能大家可以去阅读 MDN Web Docsicon-default.png?t=N7T8https://developer.mozilla.org/en-US/docs/Learn/CSS/CSS_layout/Responsive_Design

这篇文章详细介绍了以上属性的各个功能。

三、代码

        注:以下代码页面布局借鉴某招聘网站。

  • CSS部分
* {margin: 0;padding: 0;box-sizing: border-box;
}#main-menu {position: relative;background: rgba(0, 0, 0, 0.2);width: 100%;max-width: 100%;box-shadow: 2px 2px 6px 2px rgba(0, 0, 0, 0.3);
}.main-body {position: relative;padding: 30px;display: flex;justify-content: center;
}.carousel-space {
}.search-space {margin-bottom: 20px;
}.fake-input-box {border: solid 1px lightgrey;height: 45px;position: relative;border-radius: 2px;display: flex;justify-content: center;
}.fake-input-search {height: 100%;border: none;width: 80px;background: red;color: white;border-top-right-radius: 2px;border-bottom-right-radius: 2px;float: right;cursor: pointer;
}.none-style-input {border: none;height: 100%;width: 100%;padding: 2px 5px;outline-style: none;
}.none-style-ul {list-style: none;
}.main-menu-ul {display: flex;justify-content: center;
}.main-menu-item {padding: 12px 16px;
}.main-menu-item:not(li:first-child) {cursor: pointer;
}.main-menu-item:first-child {margin-right: 50px;
}.main-menu-item:last-child {margin-left: 50px;color: blue;
}.main-menu-item:hover:not(li:first-child, li:last-child) {background: red;color: white;
}.addr-switch {background: none;border: none;cursor: pointer;padding: 0 3px;
}.addr-switch:hover {color: dodgerblue;
}.main-footer {position: relative;width: 100%;display: flex;flex-direction: row;justify-content: space-evenly;flex: 1;border-top: solid 1px rgba(0, 0, 0, 0.1);color: rgba(0, 0, 0, 0.5);font-size: 12px;line-height: 20px;padding: 10px 0;
}.company-info {align-items: center;
}.hiring-info {margin-right: 10px;text-align: center;color: rgba(0, 0, 0, 0.7);
}.alternative-info {}.hiring-info-title {margin-top: 16px;
}.jobs-selection {margin-top: 30px;
}.jobs-selection > ul > li {padding: 20px 26px;border-top: solid 1px rgba(0, 0, 0, 0.1);cursor: pointer;
}.jobs-selection > ul > li:first-child {}.drawer-container {position: fixed;height: 100%;width: 600px;right: -600px;top: 0;background: white;box-shadow: 2px 2px 6px 2px rgba(0, 0, 0, 0.2);transition: transform 1.5s;max-width: 100%;
}.show {transform: translateX(-600px); /* 展开抽屉 */transition: transform 1.5s;
}.drawer-header {padding: 10px 16px;border-bottom: solid 1px rgba(0, 0, 0, 0.2);color: lightslategray;
}.drawer-body {padding: 10px;height: auto;
}.close-icon {float: right;cursor: pointer;
}.form-item:first-child {display: flex;flex-direction: row;
}.form-item {padding: 10px;width: 100%;height: auto;
}.form-item > label {display: flex;flex: 2;
}.form-item > label > span {width: 30%;vertical-align: bottom;color: rgba(0, 0, 0, 0.6);
}.form-item > label > input {width: 100%;height: 30px;padding: 4px;
}.drawer-footer {float: right;
}.confirm-btn {background: red;
}.close-btn {background: rgba(0, 0, 0, 0.4);
}.confirm-btn, .close-btn {outline-style: none;border: none;padding: 4px 6px;margin-right: 8px;cursor: pointer;color: white;
}img {max-width: 100%;
}
  • H5+JS部分
<!DOCTYPE html>
<html lang="en">
<head><meta charset="UTF-8" name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0,minimum-scale=1.0, user-scale=0"><title>Title</title><link type="text/css" rel="stylesheet" href="css/a.css"></head>
<body>
<div class="main"><header class="main-header"><menu id="main-menu"></menu></header><main class="main-body"><div class="hiring-info"><div class="hiring-info-title"><h5>选择你心仪的职业</h5></div><div class="jobs-selection" id = 'jobs-selection'></div></div><div class="carousel-space"><div class="search-space"><div class="fake-input-box"><input class="none-style-input" placeholder="搜索热门职业"><button class="fake-input-search">搜索</button></div></div><div class="carousel-img-group"><div><img id="carousel-img" alt="" width="600px" height="500px" src="carouselImg/c.jpg"></div></div></div><div class="other-info"></div></main><footer class="main-footer"><div class="company-info"><p>未经 xxxxxx.com 同意,不得转载本网站之所有招聘信息及作品 xxxxx招聘网版权所有</p><p>京ICP备xxxxxxx号  合字xx-xxxxxx</p><p>京公网安备 1xxxxxxxxxxxxx号  人力资源许可证:xxxxxxxxxxxxxxxxx号</p><p>网上有害信息举报专区  违法不良信息举报电话:400-xxx-xxxx 关爱未成年举报热线:400-xxx-xxxx-x</p><p>xx区人力资源与社会保障局监督电话</p></div><div class="alternative-info"><p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p><p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p><p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p><p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p><p>xxxxxxxxxxxxxxxxxxxxxxxxxxxxx</p></div></footer><div class="drawer-container"><div class="drawer-header"><span>填写你的应聘信息</span><span onclick="closeDrawerContainer()" class="close-icon">×</span></div><div class="drawer-body"><form><p class="form-item"><label for="employee-name"><span>姓名: </span><input id="employee-name"/></label></p><p class="form-item"><label for="employee-age"><span>年龄: </span><input id="employee-age"/></label></p><p class="form-item"><label for="employee-address"><span>目前住址: </span><input id="employee-address"/></label></p><p class="form-item"><label for="workplace-expected"><span>希望工作的城市: </span><input id="workplace-expected"/></label></p><p class="form-item"><label for="employee-eduction"><span>您的学历: </span><input id="employee-eduction"/></label></p><p class="form-item"><label for="employee-major"><span>您的专业:</span><input id="employee-major"/></label></p><p class="form-item"><label for="employee-work-experiences"><span>工作经历:</span><input id="employee-work-experiences"/></label></p></form></div><div class="drawer-footer"><button class="confirm-btn" onclick="">确定</button><button class="close-btn" onclick="closeDrawerContainer()">关闭</button></div></div>
</div>
</body>
<script src="js/utils.js"></script>
<script type="text/javascript">window.onload = ()=> {this.initializeMenu();const intervalId = this.triggerCarousel();this.initializeCarousel(intervalId);this.initializeJobGenres();}const menuNames = [{id: '0', name: '全国', icon: ''},{id: '1', name: '首页', icon: ''},{id: '2', name: '城市频道', icon: ''},{id: '3', name: '政企招聘', icon: ''},{id: '4', name: '校园招聘', icon: ''},{id: '5', name: '高端职位', icon: ''},{id: '6', name: '海外招聘', icon: ''},{id: '7', name: '我要投简历', icon: ''},];const jobGenre = ['技术', '产品', '设计', '市场', '运营', '销售', '管理'];const carouselPics = ['a', 'b', 'c'];function initializeCarousel(id) {const carousel = iDomById('carousel-img');carousel.onmouseover = () => {clearInterval(id);}carousel.onmouseleave = () => {this.initializeCarousel(triggerCarousel());}}function closeDrawerContainer() {const drawer = document.querySelector('.drawer-container');if (drawer.classList.contains('show')) {drawer.classList.remove('show'); // 关闭抽屉} else {drawer.classList.add('show'); // 打开抽屉}}function initializeJobGenres() {const parent = iDomById('jobs-selection');const ul = document.createElement('ul');ul.className = 'none-style-ul';const frag = document.createDocumentFragment();for (const name of jobGenre) {const li = document.createElement('li');li.onmouseover = () => {li.style.background = 'coral';li.style.color = 'white';}li.onmouseleave = () => {li.style.background = 'white';li.style.color = 'rgba(0, 0, 0, 0.7)';}li.innerText = name;frag.append(li);}ul.appendChild(frag);parent.appendChild(ul);}function triggerCarousel() {const obj = {x: 0};return setInterval(setCarouselSrc, 2000, obj);}function setCarouselSrc(obj) {obj.x = (obj.x + 1) % carouselPics.length;iDomById('carousel-img').src = `carouselImg/${carouselPics[obj.x]}.jpg`;}function initializeMenu() {const menu = iDomById('main-menu');const menuUl = document.createElement('ul');menuUl.className = 'main-menu-ul none-style-ul';const fragment = document.createDocumentFragment();for (const obj of menuNames) {const li = document.createElement('li');li.className = 'main-menu-item';const icon = document.createElement('span');icon.className = 'menu-item-icon';icon.innerText = obj.icon;const txt = document.createElement('span');txt.className = 'menu-item-name';txt.innerText = obj.name;li.appendChild(icon);li.appendChild(txt);fragment.append(li);}menuUl.appendChild(fragment);menu.appendChild(menuUl);const firstChild = menuUl.firstChild;const btn = document.createElement('button');btn.className = 'addr-switch';btn.innerText = '[切换]'firstChild.appendChild(btn);btn.onclick =()=> {addrSwitch();}const menuLi = document.getElementsByClassName('main-menu-item');const lastLi = menuLi[menuLi.length - 1];lastLi.onclick = () => {closeDrawerContainer();};}function addrSwitch() {}</script>
</html>
  • utils.js部分 
function iDomById(id) {return document.getElementById(id);
}

四、结语 

最后,感谢阅读。由于还在学习前端技术当中,文章内容不是很全面和系统,后续有机会还会持续补充!

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

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

相关文章

数据分析的理念、流程、方法、工具(下)

四、用户分群 1、用户分群 用户分群是精细化运营的基础要求&#xff0c;也是数据分析的最基础方式。对用户进行分群&#xff0c;能帮助我们了解每个细分群体用户的变化情况&#xff0c;进而了解用户的整体现状及发展趋势。同时&#xff0c;由于运营资源本身有限&#xff0c;不…

技术变革下职业危机

方向一&#xff1a;技术变革 1.人工智能&#xff08;AI&#xff09;&#xff1a;AI技术的快速发展正在改变各个行业。AI在医疗诊断、金融分析、客户服务以及物流管理等方面都有广泛应用&#xff0c;提高了效率和准确性。但同时也引发了一些道德和道德问题&#xff0c;比如隐私…

玩法与画面全面升级,艾尔莎H311-PRO和你玩转《如龙8:无尽财富》

作为经典的日系开放式世界游戏系列&#xff0c;《如龙》至今已经推出了有十多部作品&#xff0c;它凭借着经典的日式RPG玩法吸引了不少忠实粉丝。早在2022年9月的时候&#xff0c;世嘉就已经公布了最新的正统续作《如龙8》&#xff0c;而在经历了一年半的等待以后&#xff0c;我…

jvs-rules(规则引擎)1.23功能更新说明,新增SQL变量、数据源等

规则引擎更新功能 新增: 1、新增SQL变量&#xff1a; SQL变量通常指的是在执行SQL查询时使用的动态变量。这些变量允许在查询中注入或更改某些值&#xff0c;以便根据不同的条件或输入执行不同的查询。 1.1 新增自定义SQL语言进行数据查询&#xff1b; 用户可以使用自定义的…

强化学习12——策略梯度算法学习

Q-learning、DQN算法是基于价值的算法&#xff0c;通过学习值函数、根据值函数导出策略&#xff1b;而基于策略的算法&#xff0c;是直接显示地学习目标策略&#xff0c;策略梯度算法就是基于策略的算法。 策略梯度介绍 将策略描述为带有参数 θ \theta θ 的连续函数&#…

Pycharm运行提示(运行‘Python测试(00.py内)‘(u)

为什么有时候我在pycharm中运行代码会出现图片中的问题&#xff1f; 我们该如何改过来&#xff1f; 很简单 点击文件-设置 点击Python集成工具&#xff0c;在默认测试运行程序里修改为Unittest即可 再次运行代码就会显示正常的运行 你的pycharm可能是英文 如何英文变中文&…

鸿蒙APP的应用场景

鸿蒙APP可以用于多种场合和设备类型&#xff0c;这是鸿蒙系统的分布式能力和多终端适配的优势。以下是一些鸿蒙APP的应用场景&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 1.智能手机和平板电脑&am…

开源:两个免费的年会抽奖项目

前言 年会抽奖项目平常基本不用&#xff0c;只有到年终才会排上用场。开发的时长也不会给太久&#xff0c;而且也只是自家公司内部使用的&#xff0c;所以不需要部署&#xff0c;数据库后端甚至都可以省略&#xff1b;然后我就找了个开源的 符合我要求的年会抽奖项目进行二次开…

CSS 图片遮罩学习小节

概念&#xff1a;-webkit-mask-image是一项用于制作镂空图形和图形遮罩效果的CSS样式属性。 -webkit-mask-image 的值既可以是渐变色也可以是图片地址。 -webkit-mask-image 的起源很早&#xff0c;但兼容性不好&#xff0c;因此用途并不广泛。 效果如下&#xff1a; 底图&…

Spring Security 6 学习-1

什么是 Spring Security Spring Security文档 Spring Security中文文档 Spring Security 是 Spring 家族中的安全型开发框架&#xff0c;主要解决三大方面问题&#xff1a;认证&#xff08;你是谁&#xff09;、授权&#xff08;你能干什么&#xff09;、常见攻击保护&#xff…

深度强化学习Task3:A2C、A3C算法

本篇博客是本人参加Datawhale组队学习第三次任务的笔记 【教程地址】 文章目录 Actor-Critic 算法提出的动机Q Actor-Critic 算法A2C 与 A3C 算法广义优势估计A3C实现建立Actor和Critic网络定义智能体定义环境训练利用JoyRL实现多进程 练习总结 Actor-Critic 算法提出的动机 蒙…

Tableau1 安装基础知识

参考内容&#xff1a; 戴师兄-戴你玩转数据分析菜菜菊花酱数据分析课程 1 安装注意事项 若下次打开发现软件损坏&#xff0c;可以重新安装&#xff1b;后期激活码可以去淘宝上购买&#xff08;选择1key两机&#xff09;&#xff1b;若买了1key1机的密钥&#xff0c;需要在两台…

深度学习记录--mini-batch gradient descent

batch vs mini-batch gradient descent batch&#xff1a;段&#xff0c;块 与传统的batch梯度下降不同&#xff0c;mini-batch gradient descent将数据分成多个子集&#xff0c;分别进行处理&#xff0c;在数据量非常巨大的情况下&#xff0c;这样处理可以及时进行梯度下降&…

力扣精选算法100题——在排序数组中查找元素的第一个和最后一个位置(二分查找专题)

目录 第一步&#xff1a;了解题意 第二步&#xff1a;算法原理 &#x1f6a9;查找区间左端点值 ❗处理细节 循环条件&#xff1a; 求中点 &#x1f6a9;查找区间右端点值 ❗处理细节 循环条件 求中点 &#x1f6a9;总结 第三步&#xff1a;代码实现 第四步:总结模…

OpenHarmony 鸿蒙使用指南——概述

简介 OpenHarmony采用多内核&#xff08;Linux内核或者LiteOS&#xff09;设计&#xff0c;支持系统在不同资源容量的设备部署。当相同的硬件部署不同内核时&#xff0c;如何能够让设备驱动程序在不同内核间平滑迁移&#xff0c;消除驱动代码移植适配和维护的负担&#xff0c;…

技术驱动宠物健康:宠物在线问诊系统的高效搭建手册

在数字化时代&#xff0c;技术正在催生出许多创新的医疗服务&#xff0c;而宠物在线问诊系统便是其中一项引领潮流的创举。本文将为你提供一份高效搭建宠物在线问诊系统的手册&#xff0c;通过技术代码示例&#xff0c;让你轻松打造一套技术驱动的宠物健康管理系统。 1. 架构…

常用芯片学习——HC244芯片

HC573 三态输出八路缓冲器|线路驱动器 使用说明 SNx4HC244 八路缓冲器和线路驱动器专门设计用于提高三态存储器地址驱动器、时钟驱动器以及总线导向接收器和发送器的性能和密度。SNx4HC244 器件配备两个具有独立输出使能 (OE) 输入的 4 位缓冲器和驱动器。当 OE 为低电平时&a…

【java问题解决】-word转pdf踩坑

问题情境&#xff1a; 项目中采用word转pdf&#xff0c;最开始使用的pdf相关的apache的pdfbox和itextpdf&#xff0c;后面发现对于有图片背景的word转pdf的情景&#xff0c;word中的背景图会直接占用位置&#xff0c;导致正文不会正确落在背景图上。 解决方案&#xff1a; 采…

【数据结构】 顺序栈的基本操作 (C语言版)

目录 一、顺序栈 1、顺序栈的定义&#xff1a; 2、顺序栈的优缺点 二、顺序栈的基本操作算法&#xff08;C语言&#xff09; 1、宏定义 2、创建结构体 3、顺序栈的初始化 4、顺序栈的入栈 5、顺序栈的出栈 6、取栈顶元素 7、栈的遍历输出 8、顺序栈的判空 9、顺…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(19)-Fiddler精选插件扩展安装,将你的Fiddler武装到牙齿

1.简介 Fiddler本身的功能其实也已经很强大了&#xff0c;但是Fiddler官方还有很多其他扩展插件功能&#xff0c;可以更好地辅助Fiddler去帮助用户去开发、测试和管理项目上的任务。Fiddler已有的功能已经够我们日常工作中使用了&#xff0c;为了更好的扩展Fiddler&#xff0c…