sheral——一个方便定制及扩展的UI组件库

二阶系统的带宽(频域分析) 下面以典型I型系统为例,计算系统的开环截止频率和闭环截止频率。设I型系统为: 1:系统的开环截止频率为 2:系统的闭环截止频率 其实我们在工程整定时,把ζ = 0.707,也把系统的带宽近视看成自然震荡角频率即 (wb≈wc≈wnw_{b}\approx w_{c}\approx w_{n}wb​≈wc​≈wn​)对于二阶系统。 ... 阅读详情

sheral——一个方便定制及扩展的UI组件库

本文作者:imweb 结一 原文出处:imweb社区 未经同意,禁止转载

sheral是什么

简单来说,sheral是个UI库,目前拥有25+常用移动端组件(如btn, card, media, nav, dialog, toast等),同时允许用户非常方便扩展及定制属于自己的组件。但是sheral决不只限于UI库,它还拥有了30+ sass 的基础mixin或%的封装及其他基础能力,有了这些基础能力,不仅快捷便利,更是拥有了更多扩展可能。下面是sheral的三张UI截图:

虽然UI部分从效果上看与其他的UI库没有什么特殊区别,都是移动端重构需要面对的一些常见的页面效果。但是表面的相似,并不代表本质的类同,只有深入代码才能发现不一样的惊喜。

sheral的设计思想

虽然目前网上的UI库众多,但是下定决心再造个轮子,也并非等闲之事,当然更不能生搬硬套为了UI而UI,于是在创造sheral的同时,更要赋予其一个思想灵魂。

sheral整体设计思想主要分为基础功能部分和UI组件部分,其中基础功能部分由sandal来承载,而UI组件就是基于sandal提供的基础能力实现的UI(一如jquery和插件的关系,sandal就如jquery,而一个个组件就如一个个扩展的jquery插件),如下图:

sandal负责基础通用兼容等基础能力处理,犹如人体的心脏,而components为一个个UI组件,如人体的四肢百骸。由心脏sandal向components四肢百骸提供动力,这样就激活了整个sheral的生机。

所以要理解sheral,首先要解决的是基础通用的sandal这块,只有了解了这块如心脏般的奠基石,后面的所有都是添砖加瓦的水到渠成。

基础能力搭建

因为整个基础能力部分都由sandal来负责,如变量,mixin,reset等,所以sandal的搭建既要保证基础能力充足又要保证不至于臃肿,整体设计图如下:

首先sandal由core和ext两部分组成,core是核心部分,ext是属于扩展部分(提供的一些额外的能力,根据需要引用)。

其中core的五个文件,分别负责基础的变量,mixin,媒体查询,动画,重置。这五个文件最终构成两个集合文件_function.scss和_core.scss,而我们对外的接口就是这两个集合文件,其中_function.scss中导入了除重置之外的四个文件,保证了所有的基础功能,并且不输出任何样式,而_core.scss则在function的基础上加入了重置样式;而ext部分则是根据项目需要引用的,分别为一些帮助的class,一些绘制的icon class,以及网格系统。

与其他多数UI库不同,这里设计的sandal本身就是独立的,sandal中的变量,mixin等只负责基础常用的,所有与基础常用无关的都不应该存在(如组件的变量或mixin)。正因为sandal的独立,所以完全可以脱离sheral作为移动端的基础库使用,而这正是设计的最初目的。如下是抽取的几个mixin定义截图(所有mixin定义可见_mixin.scss):

sandal mixin

有了这些基础能力保证,在写具体的UI效果时就会如虎添翼,如.header{@include fixed;}, .title{@extend %ellipsis}, .img-wrap{@include object-wrap($child: '.img')}等等,更多sandal的介绍及使用请参考sandal 文档

了解了这个具备良好接口设计及丰富功能调用的奠基石sandal之后,就轮到下一个遍地开花的UI组件扩展了

UI组件扩展

常用的UI效果,90%的前端都可以搞定,并且满足跟设计图一样。但是当面对各种机型的兼容处理,代码如何高效重用,各种可能的修改及扩展这三大问题的时候,也许就是个问题了。

所以UI组件不再是简单的实现效果,而是必须满足以下条件:

  • 各种兼容,让你无后顾之忧;
  • 方便使用,可以根据需求修改定制;
  • 满足更多的使用场景,毕竟设计说变就变;
  • 克制大于放肆,不能因为满足各种场景,就不加以控制地去成倍制造代码。

有了上面条件的限制,一个好的UI组件就会浴火而成,而一个好的UI组件除了解决上述的三大问题,还可以帮助我们轻松面对一个所有人都必须面对的终极大问题,赶时间。

下面以sheral card 的demo为例,简单说下一个UI组件的精雕细琢的考虑,效果图截图如下:

先对我们要实现的效果分析如下:

  • 卡片的形式:一种是边框分割的;一种是背景色分割的,无边框
  • 每行显示的数量,2个或3个
  • 卡片的图片是否要默认占位高度,具体说明可参考移动端重构实战系列6——icon与图片
  • 样式的控制,一般来说只会使用一种卡片样式,所以要设置开关控制样式输出
  • 布局的控制,毕竟不是每个人都需要兼容低端安卓机,所以flex和float可以自由切换,也方便以后直接升级

具体源码实现如下:

@charset "UTF-8";

//-----------------------------------------------------
// card list
//-----------------------------------------------------

$cardFlexSwitch:       false !default; // 默认使用float布局
$cardGap:              10px !default; // 默认间距10px
$cardImgRation:        1 !default; // 图片比例
$carLineNum:           2 !default; // 目前只支持2 或 3 等分

$cardBorderSwitch:     true !default; // 启用border分割

$cardGapSwitch:        true !default; // 启用背景分割

.card-list {
    @if $cardFlexSwitch {
        display: flex;
        flex-wrap: wrap;
    } @else {
        overflow: hidden;
    }

    .card-item {
        position: relative;
        width: 100% / $carLineNum;

        @if not $cardFlexSwitch {
            float: left;
        }

        .item-img-wrap{ // 设置图片默认占位高度
            @include object-wrap(percentage($cardImgRation), '.item-img'); // 调用sandal中定义的基础mixin
        }
        .item-img{
            width: 100%;
        }
        .item-tt {
            line-height: 30px;
        }
    }
}
@if $cardBorderSwitch{ // border 分割样式
    .card-list--border{
        background: #fff;
        position: relative;
        &::before{
            content: "";
            @include retina-one-px-border(top); // 调用sandal中定义的基础mixin
        }
        .card-item{
            padding: $cardGap !important;
            &::after{
                content: "";
                @include retina-one-px-border(bottom); // 调用sandal中定义的基础mixin
            }

            &::before{
                content: "";
                @include retina-one-px-border(right);
            }

            $type: if($carLineNum == 2, '2n', '3n'); // 2栏 3栏判断

            &:nth-of-type(#{$type}){
                &::before{
                    display: none;
                }
            }
        }
    }
}
@if $cardGapSwitch{ // 背景分割样式
    .card-list--gap{
        padding-left: $cardGap / 2;
        padding-right: $cardGap / 2;
        .card-item{
            margin-bottom: $cardGap;
            padding-left: $cardGap / 2;
            padding-right: $cardGap / 2;
        }
    }
}

如这样考虑周全的UI组件,sheral有25+(全部组件可见sheral components),同时还在不断加入新的好用组件,除了直接使用这些提供的组件外,用户还可以基于sandal提供的丰富基础能力,轻松高效扩展出自己所需组件,具体如何扩展可以参考上面的card组件。

总体优势

正是上面说的sandal的基础能力及UI组件的扩展,最后汇集成sheral的四大优点:

  • 优秀的设计思想——基础通用 + UI组件
  • 有了sandal作为基础能力的保证,提供了良好的接口设计及丰富的功能调用
  • 众多的组件数量及丰富的组件形态,并加上克制的思想,以及方便定制和扩展的能力
  • 组件不针对特定的业务,都是移动端基础常见效果,更通用

所有的这些优点最终导向一个愿景:方便,快捷,高效!

整体了解了sheral的设计思想及优点之后,下面介绍下如何使用sheral。

如何使用sheral

因为篇幅有限,这里仅以实现ios的设置列表为例(从飞行模式到运营商),如下图:

ios setting

html结构如下:

<ul class="line-list line-list--indent line-list--flex list--setting">
    <li class="line-item">
        <i class="item-icon icon-plane"></i>
        <p class="item-tt">飞行模式</p>
        <i class="icon-switch"></i>
    </li>
    <li class="line-item">
        <i class="item-icon icon-wifi"></i>
        <p class="item-tt">Wi-Fi</p>
        <span class="item-append">Tencent-StaffWiFi</span>
        <i class="icon-v-right"></i>
    </li>
    <li class="line-item">
        <i class="item-icon icon-bluetooth"></i>
        <p class="item-tt">蓝牙</p>
        <span class="item-append">关闭</span>
        <i class="icon-v-right"></i>
    </li>
    <li class="line-item">
        <i class="item-icon icon-cellular"></i>
        <p class="item-tt">蜂窝移动网络</p>
        <i class="icon-v-right"></i>
    </li>
    <li class="line-item">
        <i class="item-icon icon-hotspot"></i>
        <p class="item-tt">个人热点</p>
        <i class="icon-v-right"></i>
    </li>
    <li class="line-item">
        <i class="item-icon icon-carrier"></i>
        <p class="item-tt">运营商</p>
        <span class="item-append">中国移动</span>
        <i class="icon-v-right"></i>
    </li>
</ul>

scss代码如下:

@import "sheral/sandal/core";
@import "sheral/sandal/ext/icons"; // 引入所有的自定义icon 或者 把右箭头拷贝过来(如下注释的右箭头样式)
@import "sheral/components/line-list";

// 拷贝右箭头样式
// .icon-v-right {
//     position: relative;
//     &::after {
//         content: "";
//         @include v-arrow;
//         position: absolute;
//         left: 50%;
//         top: 50%;
//         margin-left: -2px;
//         transform: translate(-50%, -50%) rotate(45deg);
//         box-sizing: border-box;
//     }
// }

// 特殊化class
.list--setting{
    .item-icon{
        width: 30px;
        height: 30px;
    }
    // 特殊化左右为15px,默认为10px
    .line-item{
        padding-left: 15px;
        padding-right: 15px;
        &::before{
            left: 60px;
        }
        .icon-v-right{
            width: 40px;
        }
    }
}

最后,移动端重构实战系列文章可以帮助你更多的了解sheral及移动端的重构,文章列表如下:

PS:欢迎使用sheral,如有问题或建议可以在github上反馈,或在imweb群(179045421),w3cplus群(1041263),sass群(78142855)中进行交流,谢谢!

Android So加载机制分析----基于Android14源码 本文深入分析Android 14系统中SO(共享库)的两种加载机制:System.loadLibrary()和System.load()。前者通过ClassLoader查找标准路径加载,后者直接加载指定路径的SO文件。文档详细追踪了从Java层到动态链接器的完整加载链路,包括ClassLoader路径查找、JNI桥接、ART虚拟机处理以及底层linker的符号解析和重定位过程。同时还分析了Namespace隔离、JNI_OnLoad机制等核心内容,为开发者提供全面的SO加载技术解析和问题排查指南。 阅读详情

相关推荐

物流系统集成实战:从零开始用Java对接国际快递(DHL/FedEx/UPS)

本文详细介绍了如何使用Java技术栈对接DHL、FedEx和UPS三大国际快递巨头的API,构建高效、稳定的物流集成解决方案。内容涵盖认证机制、报文标准、多语言支持等关键点,并提供实战代码示例和最佳实践,帮助开发者快速实现国际快递系统集成。

efc1234567的博客 694

移动Web UI组件库汇总

1、 Ant Design Mobile介绍:一个基于 Preact / React / React Native 的 UI 组件库组件库地址:https://mobile.ant.design/index-cn组件库来源:蚂蚁金服体验技术部 2、SUI Mobile介绍:SUI Mobile 是一套基于 Framework7 ...

Andrelia的博客 1万+

手把手教你用OpenCompass评估Qwen1.5-1.8B模型(含数据集配置详解)

本文提供了使用OpenCompass评估Qwen1.5-1.8B-Chat模型的详细实战教程。内容涵盖从创建独立Python环境、下载模型与核心数据集,到编写配置文件、执行评测命令及解读结果的完整流程。重点解析了模型与数据集的配置细节,并分享了性能调优与常见问题排查方法,旨在帮助开发者快速上手系统化的模型评估。

weixin_29228781的博客 137

移动Web UI库(H5框架)有哪些,看这里就够了

前言今年上半年,项目组在项目开发的过程中建立了一套风格统一,组件丰富完善,命名统一规范的PC端UI库,适用于做大型站点,该UI库也是应用到了整个平台的项目中,在各个项目组中进行推广。因为项目的保密性,这里不方便给出实际项目,当然目前这套UI库也不是开源的。下半年开始,我们偏向做移动Web的同学也开始考虑要梳理出这样一套适用于移动端的UI库,与PC端UI库命名规范保持一致,便于项目组同学在PC项目和移

前端向朔 12万+

【49】Camunda8-Self-Managed部署之Docker方式

围绕camunda8 self-managed,介绍了基于Docker部署相关服务的过程。

AlieNeny的博客 1682

SAP ABAP BAPI_PRODORD_CHANGE:动态刷新PP主数据的实战解析

本文深入解析了在SAP ABAP开发中,如何利用BAPI_PRODORD_CHANGE函数实现生产订单PP主数据的动态刷新。针对CO02事务码无法满足的后台自动化场景,详细讲解了通过设置explosion_date和explode_new等关键参数来强制重新读取BOM和工艺路线的实战方法,并提供了核心代码示例与避坑指南,确保生产订单信息与最新主数据同步。

weixin_29231027的博客 149

前端新手必看:10 大 UI 组件库全面解析,快速搭建高质量 Web 应用」 「从零开始:Vue 和 React 最受欢迎的 UI 组件库入门指南」 「超实用!PC 端和移动端 UI 组件库推荐与实战

前端新手必看:10 大 UI 组件库全面解析,快速搭建高质量 Web 应用」 「从零开始:Vue 和 React 最受欢迎的 UI 组件库入门指南」 「超实用!PC 端和移动端 UI 组件库推荐与实战教程」 「前端开发必备:10 大 UI 组件库详解,助你快速上手项目开发」 「新手友好:Vue 和 React 的 UI 组件库对比与实战教程」 「前端开发者的宝藏:10 大 UI 组件库推荐与完整代码示例」 「快速上手:Vue 和 React 的 UI 组件库入门与实战」 「前端开发新手必读:10 大 UI

南北极之间 1万+

SAP CAP core data service 里 association 和 composition 的区别

我们进行 SAP CAP 开发时,在schema.cds里进行数据建模,可以使用 association 和 composition,来描述两个 entity 之间的关联关系。在 SAP BTP 的 Cloud Application Programming Model (CAP) 中,cds文件定义了数据模型,而和是用于建立实体关系的两种关键机制。理解它们的区别对于构建高效、清晰的 CAP 数据模型至关重要。下面,我们将通过严谨的逻辑推理,结合代码示例,深入分析和之间的核心差异。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 322

2024 热门前端 UI 组件库超全汇总!

Radix UI 是一个开源的UI组件库,专为快速开发、易于维护和可访问性优化而设计。它是一个无样式的组件库,允许开发者完全控制组件的样式,同时提供了一套全面的UI组件和工具,帮助开发者构建美观、易于访问且具有高性能的应用。在前端开发的过程中,UI 组件库扮演着至关重要的角色。它们不仅助力开发者迅速构建页面原型,还能确保页面风格的统一性,从而显著提升开发效率。本文就来盘点那些前端领域广泛认可且常用的 UI 组件库,为开发者提供参考。图片。

leyang0910的博客 1万+

CKS-CN考试之路----11

显然是alpine-b的镜像有libcrypto3-3.1.4-r5。新版本发布老版本会被回收,此时pod只剩下2个container。我们依次测试是哪个镜像里包含libcrypto3。可以看到alpine的pod有3个副本.

Q先生 652

快速傅里叶变换(FFT)的汇编实现在DSP开发中

在数字信号处理(Digital Signal Processing,DSP)开发中,使用汇编语言实现FFT可以进一步提高计算性能和优化系统资源的使用。FFT是一种分治算法,它通过将一个长度为N的离散时间域序列分解为多个长度为N/2的子序列,然后递归地进行计算。开发者可以根据实际需求,结合具体的硬件平台和编译器工具链,对FFT的汇编实现进行优化和定制化。需要注意的是,上述示例代码中只给出了FFT的基本框架,具体的合并操作及其他细节需要根据实际需求进行实现。上述示例代码演示了一个简单的FFT汇编实现。

QoTypescript的博客 683

十大常用web前端UI组件库,赶紧收藏

今天主要介绍web前端常用的UI库,这些网站基本都是背靠互联网大厂,值得web前端开发者收藏,当然还是要多多学习使用。 Vant 一款有赞出品轻量、可靠的的移动UI组件库,目前支持 Vue2、Vue3、React,微信和支付宝小程序,并由社区团队维护 React 版本和支付宝小程序版本。 官网的文档清晰易懂,如果你熟悉vue.js的组件化开发,上手非常容易。 Ant Design Ant Design是一套企业级 UI 设计语言和 React 组件库,提供了一套非常完整的组件化设计规范与组件化编码规范,能

jenreal的博客 3万+

基于单片机的宠物狗智能项圈设计

GPS定位功能:利用GPS模块实时获取宠物的位置,帮助主人追踪宠物的活动轨迹。活动监测:使用加速度传感器监测宠物的活动情况,如运动、休息等,并进行分析。健康监测:集成心率传感器,实时监控宠物的心率,以确保其健康。声音识别功能:通过麦克风捕捉宠物的叫声,检测宠物的状态(如饥饿、疼痛等)。蓝牙/Wi-Fi通信:通过蓝牙或Wi-Fi模块与手机APP或云端平台进行数据交互,实时反馈宠物的状态信息。电池管理:实现低功耗设计,确保设备的续航能力。

2201_76125393的博客 2281

探索Sheral:移动端UI的革新之旅

探索Sheral:移动端UI的革新之旅 在移动端开发的世界里,UI组件的选择至关重要。今天,我们将深入探讨一个专为移动端设计的UI库——Sheral,它不仅提供了丰富的组件,还支持高度定制和扩展,让你的移动应用界面既美观又高效。 项目介绍 Sheral是一个基于Sass的移动端UI库,它扩展自Sandal,一个基础的Sass库。Sheral的设计理念是提供一个方便定制及扩展的UI组件库,旨在帮助开...

gitblog_01157的博客 332

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

你不知道的前端框架和UI组件库 - 大合集【收藏必备】

Vue.js 是一套构建用户界面的渐进式框架。与其他重量级框架不同的是,Vue 采用自底向上增量开发的设计。 不兼容IE8,最低只能支持到 IE9 官网:https://cn.vuejs.org/ ReactJS 的确是一个伟大的东西,就其核心而言,就是一个可以和 html 混合编写的 jsx 格式,以及一个良好有序(加载时和更新时)、并和 html 渲染实时捆绑的状态机制。学习和使用 ReactJS,你并不需要对你现有的代码架构做太大的调整,只要引入 react.js 和 react-dom.js 两个文

Qianmoer的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

14 个最佳 Vue UI 组件库推荐

Vue.js 是无数前端开发人员首选的 JavaScript 框架,因为它易于学习和使用。 组件是 Vue 框架的核心——它们可以帮助你更快地从想法转变为功能性 UI。

古他妈阳光之神☀️ 3万+

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

2023 年 8 个最佳 React UI 组件库和框架

将展示八个最好的 React UI 组件库和框架,如下表所示:(星标加关注,开车不迷路)「React Bootstrap:」一个与 Bootstrap 框架集成的实用的 React UI 库。「Grommet:」如果您想在设计中实现可访问性,这个 React UI 组件库非常有用。「Blueprint:」对于桌面 React 应用程序,您需要查看 Blueprint 的产品。「Ant Design...

wang_yu_shun的博客 9015

12个Vue UI 组件库

Vue.js 是一个渐进式 javascript 框架,用于构建 UIS(用户界面)和 SPA(单页应用程序)。UI 组件库提高了我们的开发效率,增强了应用的整体外观、感觉、交互性和可访问性,下面就来看看有哪些适用于 Vue 的 UI 组件库。

顺其自然~专栏 6523

最全的ui Library

原文链接: https://github.com/opendigg/awesome-github-android-ui 内容 抽屉菜单 ListView WebView SwitchButton 按钮 点赞按钮 进度条 TabLayout 图标 下拉刷新 ViewPager 图表(Chart) 菜单(Menu) 浮动菜单 对话框 空白页 滑动删除 手势操作

梦想就是让你坚持就感到幸福的东西 5224

9个大厂的UI组件库,以后前端攒页面不愁啦!

组件库是可以重复使用的界面设计元素的集合体,有时候需要快速搭建产品,从UI设计开始来不及,前端就得先跑起来,贝格前端工场为大家精选了9个大厂的UI组件库,都是免费的。

web17886480312的博客 4607

Vue3框架下的顶尖UI组件库大盘点

推荐几款适合vue3框架的ui组件库,包括适用后台管理及移动端。

Handsome_gir的博客 6881

移动端开发常用的一些UI 组件库

一些工作中常用到的移动端组件库

weixin_51127384的博客 4545

盘点12个Vue 3的高颜值UI组件库

vue-devui 是基于 DevUI Design 的 Vue3 组件库,使用 pnpm + vite + vue3 + tsx 技术搭建,包含55个简洁、易用、灵活的组件,支持按需引入,支持主题定制,并内置 追光 / 蜜糖 / 紫罗兰 等 5 种漂亮的主题。今天给大家盘点12个Vue 3的高颜值UI组件库,凡是用过Vue 框架开发项目的老铁们最少有用过其中一种或者二种以上的UI组件库,用广东话讲:个个都靓。NutUI 3 京东风格的 Vue 移动端组件库,开发和服务于移动Web界面的企业级产品。

Jack, what else can you do besides holding your little darling? 1万+

Android(基本、高级UI组件)

android开发中UI组件和适配器的使用

qq_56127002的博客 1万+

Android最全UI库合集_android ui库

Android-DivergeView ★281- 仿美拍直播的点赞动画 LikeView ★70 - 仿即刻APP点赞桃心的效果 进度条 AVLoadingIndicatorView ★9500 - 安卓载入动画合集 NumberProgressBar ★5900 - 多彩进度条 Android-SpinKit ★8000 - Android加载动画 LoadingDrawable ★4000- 安卓工具动画集合 CircleProgress ★3700 - 三种圆形进度视图 ProgressWhe

2401_89872732的博客 2420

Android 优质的UI组件汇总

链接:https://github.com/Jay-Goo/RangeSeekBar/blob/master/app/release/app-release.apk。链接:https://github.com/yixiaolunhui/AndroidCarrouselLayout。链接:https://github.com/woxingxiao/DashboardView。链接:https://github.com/cStor-cDeep/RuleView。

圈池 3101
上一篇: 新一代包管理工具yarn
下一篇: ES6学习笔记
IMWebteam
博客等级 码龄10年 4粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值