Html jquery下拉select美化插件——selectFilter.js

news2024/11/17 8:15:37

1. Html jquery下拉select美化插件——selectFilter.js

  jQuery是一个广泛使用的JavaScript库,它简化了DOM操作、事件处理、动画以及Ajax交互,使得开发者能更高效地构建交互式网页。在本案例中,jquery.selectlist.js插件正是基于jQuery构建的,旨在提供一种优雅的方式来增强下拉框的视觉效果。
在这里插入图片描述
  在网页设计中,下拉选择框是常见的用户交互元素,但其默认样式往往较为单调,不能满足现代网页的美观需求。为了解决这个问题,开发者们创建了各种各样的下拉选择框美化插件,其中selectFilter.js便是其中之一。这个插件不仅能够美化下拉选择框,还支持常用的事件处理,提升了用户体验。
  下拉框(Select List)作为常见的交互元素,其外观和用户体验往往直接影响到网站的整体质感。然而,HTML原生的下拉框样式较为单一,难以满足现代网页设计的需求。为此,开发者们通常会借助于jQuery等JavaScript库来实现下拉框的美化和功能增强。本篇将详细介绍一款名为“jquery.selectlist.js”的插件,该插件能够轻松地为下拉框添加各种美观的特效。插件的核心功能在于将传统的HTML <select> 元素转换为具有自定义样式的可交互控件。它提供了丰富的定制选项,包括但不限于字体、颜色、背景、边框等,使得下拉框不仅在视觉上更加吸引人,同时也能更好地融入到网页的整体设计中。
  jquery.selectlist.js插件为开发者提供了一种简单且强大的方式来美化和优化网页中的下拉框元素。通过深入理解插件的工作原理和使用方法,我们可以将其灵活运用到实际项目中,提升网站的交互性和美观度。而对于有编程基础的开发者来说,进一步对插件源码进行二次开发,可以创造出更多个性化的下拉框特效,满足更复杂的需求。

1.1. 流程

  在实际应用中,jquery.selectlist.js插件的使用流程通常是这样的:
(1)确保在页面中引入了jQuery库和jquery.selectlist.js插件文件。根据提供的压缩包文件名,我们可以看到有三个主要文件:index.htmlcssjs。其中,index.html是示例页面,css目录可能包含了插件的样式文件,而js目录则包含插件的JavaScript代码。
(2)在HTML中,我们需要一个或多个<select>元素,这些元素将会被插件转换。每个<select>元素可以包含多个<option>,用于展示不同的选择项。
(3)接着,在文档加载完成后,通过调用jQuery的选择器和插件方法,例如$('select').selectlist();,将选中的<select>元素应用插件效果。
(4)如果需要自定义样式或功能,可以通过插件提供的配置选项进行设置。比如,你可以改变默认的下拉箭头图标,调整选中项的高亮样式,甚至添加自定义事件处理函数。
(5) 为了实现更好的用户体验,jquery.selectlist.js插件可能还支持触屏设备的交互,使下拉框在手机或平板电脑上也能流畅操作。

1.2. 主要功能

(1) 样式美化:该插件能够将传统的HTML <select>元素转换为具有现代感和自定义样式的组件。它可以改变下拉箭头的样式,调整选项的文字颜色、背景色等,使得整体风格与网站设计更加协调。
(2) 过滤功能selectFilter.js提供了搜索过滤功能,允许用户在下拉选项中输入关键词,快速定位到所需选项,大大提高了选择效率。
(3) 事件处理:插件支持多种事件,如change(选中项改变)、focus(获取焦点)、blur(失去焦点)等,开发者可以方便地绑定自定义函数,实现更丰富的交互逻辑。
(4) 可定制性selectFilter.js允许开发者自定义多项设置,包括但不限于主题颜色、字体大小、搜索框样式等,以适应不同场景的需求。
  在使用selectFilter.js时,我们通常会配合HTML、CSS和JavaScript来完成界面的构建。index.html是主页面文件,包含着<select>元素和其他相关HTML结构;js目录下的文件包含了插件的核心代码,一般会有一个selectFilter.js的主文件,以及可能的其他辅助脚本;css目录则存放了样式表,用于定义美化后的选择框样式;images目录可能包含箭头图标或其他必要的图像资源。
  在实际应用中,我们首先需要在HTML中引入selectFilter.js和相关的CSS文件,然后对需要美化的<select>元素进行初始化。例如:

<link rel="stylesheet" href="css/selectFilter.css">
<script src="js/selectFilter.js"></script>
<script>
$(document).ready(function() {
$('#yourSelect').selectFilter();
});
</script>

  这里,#yourSelect是你要操作的下拉选择框的ID。
  此外,php中文网免费下载站.txtphp中文网下载站.url可能是提供插件下载和相关教程的链接资源,对于学习和使用selectFilter.js有一定的帮助。
  selectFilter.js是一个强大的下拉选择框美化工具,它通过简洁的API和高度的可定制性,让开发者能够轻松地打造出美观且功能齐全的下拉选择框,提升网页的交互体验。在实际开发中,结合jQuery和其他前端技术,我们可以利用selectFilter.js创造出更多富有创新性的交互效果。

1.3. 用法

   在的第一个设置值为空的就可以有空的值选择。
   事件的话 :$(‘select’).val(‘’); - 直接设置为空
在这里插入图片描述

1.3.1. select

  name 可以按收选择的值【用于表单提交名称自定义】

1.3.2. option

(1)value:传给后台的参数
(2)selected:设置默认选中
(3)disabled :设置禁止选则

<option value="2023">2023</option>
<option value="2022" selected="selected">2022</option>
<option value="2021" disabled="disabled">2021</option>

1.3.3. 赋值

 $('#year_input_id').val("2023")
    var yearFilterId = $('#year_filter_id')
    var year1Html = `<option value="2023">2023</option>`
    yearFilterId.append(year1Html);
    var year2Html = `<option value="2022" selected="selected">2022</option>`
    yearFilterId.append(year2Html);
    var year3Html = `<option value="2021" disabled="disabled">2021</option>`
    yearFilterId.append(year3Html);
    $('#year_select_id').selectFilter({
        callBack: function (val) {
            $('#year_input_id').val(val)
        }
    });

1.3.4. 回调

//这里是初始化
$('.filter-box').selectFilter({
callBack : function (val){
//返回选择的值
console.log(val+'-是返回的值')
}
});

1.4. selectFilter源码

1.4.1. selectFilter.css

/**
 * selectFilter  --v1.0
 *
 **/
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
}

li {
    list-style: none;
}

.filter-disabled {
    -moz-user-select: none;
    -webkit-user-select: none;
    -ms-user-select: none;
}

.filter-black {
    width: 1.2rem;
}

.filter-box {
    position: relative;
    padding-top: 0.08rem;
}

.filter-box select {
    display: none;
}

.filter-text {
    height: 0.6rem;
    overflow: hidden;
    cursor: pointer;
    border: 1px solid #e6e6e6;
    display: flex;
    flex-direction: row;
    justify-content: center;
    align-items: center;
    border-radius: 0.1rem;
    margin-top: 0.08rem;
    background-color: #efeff4;
}

.filter-text .filter-title {
    min-width: 1.5rem;
    max-width: 1.65rem;
    border: 0;
    background-color: transparent;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    font-size: 0.26rem;
    margin-top: 0.2rem;
    text-align: center;
}

.filter-list {
    display: none;
    width: 100%;
    max-height: 40vh;
    background-color: #fff;
    font-size: 14px;
    position: absolute;
    z-index: 99;
    border: 1px solid #e6e6e6;
    overflow: auto;
}

.filter-list li.filter-null a {
    color: #d2d2d2;
}

.filter-list li a {
    display: block;
    padding: 0 0.05rem;
    line-height: 0.8rem;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    cursor: pointer;
    font-size: 0.34rem;
    text-align: center;
}

.filter-list li:hover {
    background-color: #f2f2f2;
}

.filter-list li.filter-selected {
    background-color: #5FB878;
}

.filter-list li.filter-selected a {
    display: block;
    color: #fff;
}

.filter-list li.filter-disabled {
    background-color: #fff;
}

.filter-list li.filter-disabled a {
    display: block;
    color: #d2d2d2;
}

.filter-list li.filter-disabled:hover a {
    cursor: not-allowed !important;
    background-color: #fff;
}

.icon-filter-arrow {
    width: 0.32rem;
    height: 0.32rem;
    margin-right: 0.2rem;
    background-repeat: no-repeat;
    background-image: url(../../img/icon/icon_arrow_down_x2.png);
    background-size: 100%;
    transition: all .2s;
}

.filter-list::-webkit-scrollbar {
    width: 4px;
    height: 4px;
}

.filter-list::-webkit-scrollbar-track {
    background: #fff
}

.filter-list::-webkit-scrollbar-thumb {
    background: #CBCBCB;
}

1.4.2 .selectFilter.js

/**
 * options={
 *  callBack : function (res){}  // 返回选中的值 进行事件操作
 * }
 * 也可以放在表单直接获取  select标签的 值
 **/

;jQuery.fn.selectFilter = function (options){
	var defaults = {
		callBack : function (res){}
	};
	var ops = $.extend({}, defaults, options);
	var selectList = $(this).find('select option');
	var that = this;
	var html = '';

	// 读取select 标签的值
	html += '<ul class="filter-list">';

	$(selectList).each(function (idx, item){
		var val = $(item).val();
		var valText = $(item).html();
		var selected = $(item).attr('selected');
		var disabled = $(item).attr('disabled');
		var isSelected = selected ? 'filter-selected' : '';
		var isDisabled = disabled ? 'filter-disabled' : '';
		if(selected) {
			html += '<li class="'+ isSelected +'" data-value="'+val+'"><a title="'+valText+'">'+valText+'</a></li>';
			//$(that).find('.filter-title').val(valText);
		}else if (disabled){
			html += '<li class="'+ isDisabled +'" data-value="'+val+'"><a>'+valText+'</a></li>';
		}else {
			html += '<li data-value="'+val+'"><a title="'+valText+'">'+valText+'</a></li>';
		};
	});
	html += '</ul>';
	$(that).append(html);
	$(that).find('select').hide();

	//点击选择
	$(that).on('click', '.filter-text', function (){
		$(that).find('.filter-list').slideToggle(100);
		$(that).find('.filter-list').toggleClass('filter-open');
		$(that).find('.icon-filter-arrow').toggleClass('filter-show');
	});

	//点击选择列表
	$(that).find('.filter-list li').not('.filter-disabled').on('click', function (){
		var val = $(this).data('value');
		var valText =  $(this).find('a').html();
		//$(that).find('.filter-title').val(valText);
		$(that).find('.icon-filter-arrow').toggleClass('filter-show');
		$(this).addClass('filter-selected').siblings().removeClass('filter-selected');
		$(this).parent().slideToggle(50);
		for(var i=0; i<selectList.length; i++){
			var selectVal = selectList.eq(i).val();
			if(val == selectVal) {
				$(that).find('select').val(val);
			};
		};
		ops.callBack(val); //返回值
	});

	//其他元素被点击则收起选择
	$(document).on('mousedown', function(e){
		closeSelect(that, e);
	});
	$(document).on('touchstart', function(e){
		closeSelect(that, e);
	});

	function closeSelect(that, e) {
		var filter = $(that).find('.filter-list'),
			filterEl = $(that).find('.filter-list')[0];
		var filterBoxEl = $(that)[0];
		var target = e.target;
		if(filterEl !== target && !$.contains(filterEl, target)
			&& !$.contains(filterBoxEl, target)) {
			filter.slideUp(50);
			$(that).find('.filter-list').removeClass('filter-open');
			$(that).find('.icon-filter-arrow').removeClass('filter-show');
		};
	}
};

1.5. 示例代码

1.5.1. index.tml

<!doctype html>
<html>
<head>
    <meta charset="utf-8">
    <title>下拉列表</title>
    <meta name="viewport"
          content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-scalable=no"/>
    <script type="text/javascript" src="../static/js/init-rem.js"></script>
    <link rel="stylesheet" type="text/css" href="../static/css/mui.min.css"/>
    <script type="text/javascript" src="../static/js/mui.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../static/css/mui.loading.css"/>
    <script type="text/javascript" src="../static/js/mui.loading.js"></script>
    <script type="text/javascript" src="../static/js/my-mui-loading.js"></script>
    <link rel="stylesheet" type="text/css" href="../static/css/mobileSelect.css"/>
    <script type="text/javascript" src="../static/js/mobileSelect.min.js"></script>
    <script type="text/javascript" src="../static/js/echarts.min.js"></script>
    <link rel="stylesheet" type="text/css" href="../static/css/selectFilter.css"/>
    <script type="text/javascript" src="../static/js/jquery-3.1.1.min.js"></script>
    <script type="text/javascript" src="../static/js/selectFilter.js"></script>
    <link rel="stylesheet" type="text/css" href="../static/css/base.css"/>
    <script type="text/javascript" src="../static/helper/net-helper.js"></script>
    <script type="text/javascript" src="../static/helper/init-helper.js"></script>
    <script type="text/javascript" src="../static/constant/sp-constant.js"></script>
    <script type="text/javascript" src="../static/js/vconsole.min.js"></script>
    <script type="text/javascript">
        //var vc = new VConsole()
    </script>
</head>
<body>
<!--标题区域-->
<section class="base-title-layout">
    <div class="base-title-bar">
         <span class="base-title-back" onclick="history.go(-1)">
             <img src="../img/icon/icon_back.png"/>
         </span>
        <h1>下拉列表</h1>
        <span class="base-title-back"></span>
    </div>
</section>
<!--内容区域-->
<div class="base-page-layout">
    <div class="base-select-section">
        <div>
            <div class="base-select-layout">
                <div id="year_select_id" class="filter-box">
                    <div class="filter-text">
                        <input id="year_input_id" class="filter-title"
                               type="text" placeholder="年份" readonly/>
                        <i class="icon-filter-arrow"></i>
                    </div>
                    <select id="year_filter_id" name="month_filter_id"></select>
                </div>
            </div>
        </div>
    </div>
</div>
<script type="text/javascript" src="../js/page-select-filter.js"></script>
</body>
</html>

1.3.2. index.js

$(function () {
    //返回上一页面
    backPage()
    listener()
    initData()
})

function initData() {

}
function listener() {
    $('#year_input_id').val("2023")
    var yearFilterId = $('#year_filter_id')
    var year1Html = `<option value="2023">2023</option>`
    yearFilterId.append(year1Html);
    var year2Html = `<option value="2022" selected="selected">2022</option>`
    yearFilterId.append(year2Html);
    var year3Html = `<option value="2021" disabled="disabled">2021</option>`
    yearFilterId.append(year3Html);
    $('#year_select_id').selectFilter({
        callBack: function (val) {
            $('#year_input_id').val(val)
        }
    });
}

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

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

相关文章

复旦大学附属中山医院院士团队论文遭遇质疑

近日&#xff0c;一篇发表于肝脏领域顶级期刊《Hepatology》(IF:17.1;Q1&#xff09;杂志的肝细胞癌研究论文因图像数据的相似性问题受到质疑。该论文题为‘Protein tyrosine phosphatase receptor S acts as a metastatic suppressor in hepatocellular carcinoma by control …

找不到concrt140.dll怎么修复,这4种方法可轻松搞定

1. concrt140.dll 定义 1.1 系统文件 concrt140.dll 是一个系统文件&#xff0c;属于 Windows 操作系统中重要的动态链接库&#xff08;DLL&#xff09;之一。它通常位于系统的 System32 或 SysWOW64 文件夹中&#xff0c;是 Microsoft Visual C 2015 Redistributable 包的一…

如何在产品上扩大储存?教你一招简单好用的!

你是不是经常遇到需要扩大库存的问题&#xff1f;毕竟总是有很多文件需要存储&#xff1a;视频、音频、文件。。。 但是芯片的空间寸土寸金呀&#xff01; 内部不够只能外扩&#xff0c;然后就是要编写各种驱动&#xff0c;还有Flash替换。。。怎么听着就头疼&#xff01; 教…

【一文带你找到答案!】你了解文档透明加密系统吗?文档透明加密系统有什么功能?

在当今数字化时代&#xff0c;信息安全已成为企业和个人不可忽视的重要议题。 文档透明加密系统作为保护敏感信息的关键技术之一&#xff0c;正逐渐受到广泛关注和应用。 本文将带您深入了解文档透明加密系统&#xff0c;并详细解析其各项功能。 一、文档透明加密系统概述 文…

linux常见指令与权限【第四课】

19.tar指令&#xff08;重要&#xff09;&#xff1a;打包/解包&#xff0c;不打开它&#xff0c;直接看内容 tar [-cxtzjvf] &#xff1a; -c &#xff1a;建立一个压缩文件的参数指令 (create 的意思 ) &#xff1b; -x &#xff1a;解开一个压缩文件的参数指令&#xff…

Java线程池和原子性

文章目录 前言1 线程池1.1 线程池概述1.1.1 线程池存在的意义1.1.2 Executors默认线程池 1.2 线程状态介绍1.2.1 线程状态源码1.2.2 线程状态含义1.2.3 线程状态转换图 2 原子性2.1 volatile关键字2.2 synchronized解决2.3 原子性2.4 AtomicInteger类2.5 悲观锁和乐观锁 前言 …

TikTok五分钟开户快速步骤流程!

1、注册您的账户 首先&#xff0c;访问TikTok广告管理器的注册页面&#xff08;https://ads.tiktok.com/i18n/signup/&#xff09;以创建账户。您可以选择使用电子邮件或手机号码进行注册。输入您的电子邮件和密码后&#xff0c;您需要同意TikTok的广告条款&#xff0c;然后点击…

【路径规划】用于识别封闭多边形竞技场内两点之间的最短路径

摘要 本项目展示了一种在包含障碍物的封闭多边形区域内识别两点之间的最短路径的算法。该算法不依赖于离散化的地图&#xff08;如网格地图&#xff09;&#xff0c;而是直接通过几何计算处理路径和障碍物之间的关系&#xff0c;生成沿着障碍物边缘的最优路径。实验结果表明&a…

软考中级网络工程师选择题

部分参考 软考中级网络工程师全面学习笔记第2版(5万字)配套视频及课件_软考中级网络工程师资料-CSDN博客 1.计算机网络概述 操作系统 OSI七层模型&#xff1a;物联网淑慧试用 TCP/IP&#xff1a;网网&#xff08;网际层&#xff09;传应 高频考点&#xff1a; 中央处理器CP…

数仓思想、数仓建模、维度建模理论、数仓面试题

文章目录 一、数仓建模1、数仓建模的意义2、数仓建模方法论1&#xff09;ER模型&#xff1a;2&#xff09;六范式&#xff1a; 3、维度模型 二、维度建模理论之事实表1、事务型事实表2、周期型快照事实表3、累计型快照事实表 三、维度建模理论之维度表1、设计步骤2、设计要点3、…

C++ 9.25

手动实现栈、和队列 stack #include <iostream> using namespace std; class Stack { private: int* arr; // 存储栈元素的数组 int top; // 栈顶索引 int capacity; // 栈的容量 public: Stack(int size) { arr new int[size]; c…

uni-app+vue3开发微信小程序使用本地图片渲染不出来报错[渲染层网络层错误]Failed to load local image resource

我把图片放在assets里面页面通过相对路径引入。结果一直报错。 最后我把图片放在static文件夹下面。然后修改路径指向static就可以了 或者是我们必须先import 这个图片然后在使用 import banner1 from ../../assets/images/banner/banner1.png; <image :src"banner…

戴尔迅速应对疑似信息泄露事件,强化数据保护措施|硬盘文件数据销毁 文件销毁 数据销毁

在全球数字化转型的浪潮中&#xff0c;数据已成为企业最宝贵的资产之一&#xff0c;而数据安全则是这一进程中的基石。近期&#xff0c;戴尔公司遭遇了一起疑似大规模信息泄露事件&#xff0c;涉及约4900万用户的信息&#xff0c;这一事件迅速引发了全球范围内的广泛关注。面对…

【开源】 mRemoteNG 一键搞定!推荐一款强大的.NET多协议远程连接管理器

今天给大家推荐一款.NET开发的多协议、选项卡式远程连接管理器mRemoteNG。 mRemoteNG 是 mRemote 的一个分支&#xff1a;一个开源的、标签式的、多协议的、用于 Windows 的远程连接管理器。 mRemoteNG是一个开源的Windows远程连接管理器&#xff0c;它支持多种协议&#xff0c…

交通锥检测系统源码分享

交通锥检测检测系统源码分享 [一条龙教学YOLOV8标注好的数据集一键训练_70全套改进创新点发刊_Web前端展示] 1.研究背景与意义 项目参考AAAI Association for the Advancement of Artificial Intelligence 项目来源AACV Association for the Advancement of Computer Visio…

Python 使用selenium 4.25 进行爬虫(1)

都说python做爬虫比较好&#xff0c;于是我跟着大家的脚步学习python进行爬虫&#xff0c;但是调试了半天&#xff0c;出现各种各样的问题&#xff0c;最终都得到实现了&#xff0c;下面我们来看具体的代码&#xff1a; from selenium import webdriver from selenium.webdriv…

模拟银行操作

设计实现一个银行新用户现金业务办理程序&#xff0c;使其模拟新用户到银行办理现金存取业务时的场景。要求如下&#xff1a; (1)有对于用户到来的欢迎动作、用户离开的提醒动作 (2)有用户的开户、存款和取款动作&#xff0c;在完成开户存款和取款操作后&#xff0c;要提示用…

Godot C# 自定义摄像机

前言 说起来&#xff0c;Unity的社区环境跟插件支持确实要比Godot好很多&#xff0c;比如我们Unity最喜欢的Cinemachine插件&#xff0c;只需要动动手指就能轻松实现很多高级的摄像机动效。 所以一转到Godot就有一种力不从心的感觉&#xff0c;于是既然动不了手指我们就动手。自…

凤凰模拟器V6中无人机如何设置“有头模式”

凤凰模拟器是一款专为航模新手设计的飞行模拟器&#xff0c;它能够模拟大疆无人机、各种穿越机、固定翼等多种飞行器&#xff0c;提供逼真的飞行体验。该软件的操作简单易懂&#xff0c;适合新手练习使用。 一般来说&#xff0c;打开凤凰模拟器&#xff0c;选择好机型&#xf…

快速上手 Hugging Face Transformers:完整模型微调训练步骤全攻略

在自然语言处理&#xff08;NLP&#xff09;领域&#xff0c;模型微调&#xff08;Fine-Tuning&#xff09;是提升预训练模型在特定任务上表现的关键步骤。本文将详细介绍如何使用 Hugging Face Transformers 库进行模型微调训练&#xff0c;涵盖数据集下载、数据预处理、训练配…