首页 文章 精选 留言 我的

精选列表

搜索[前端设计],共10000篇文章
优秀的个人博客,低调大师

前端如何优雅实现0到auto的高度过渡

各位好,相信大家都知道,最近更新Chrome已经支持了0到auto的高度过渡。但是很多人反映这种特性太新了,出于兼容考虑用不了的。而实际上calc-size是可以渐进增强的。今天我就给大家表演一下,0到auto的渐进增强兼容所有浏览器。 我们先搭建一个空白工程化项目 这个示例工程。是一个计数器。 import * as React from "react"; import { Component } from "react"; interface AppProps { } interface AppState { count: number; } export default class App extends Component<AppProps, AppState> { constructor(props: AppProps) { super(props); this.increase = this.increase.bind(this); this.decrease = this.decrease.bind(this); this.state = { count: 0 }; } private decrease() { this.setState({ count: this.state.count - 1 }); } private increase() { this.setState({ count: this.state.count + 1 }); } render() { var { count } = this.state; return <> <h1>Hello World!</h1> <div> <button type="button" onClick={this.decrease}>-</button> {count} <button type="button" onClick={this.increase}>+</button> </div> </>; } } 接下来我们创建一个组件 这个组件有展开和收起2种状态。修改传入的属性,可以切换className import * as React from "react"; import { Component } from "react"; import "./CollapseBody.scss"; export interface CollapseBodyProps { open?: boolean; } export class CollapseBody extends Component<CollapseBodyProps> { render() { let { open, children } = this.props; let classList = ["collapse-body"]; if(open) { classList.push('collapse-body_open'); } else { classList.push('collapse-body_close'); } return <div className={classList.join(" ")}> {children} </div>; } } 接下来我们引入组件 直接在刚刚的计数器上改一下,这样在计数的时候就会切换展开收起状态。 import * as React from "react"; import { Component } from "react"; import { CollapseBody } from "./Components/Collapse/CollapseBody"; interface AppProps { } interface AppState { count: number; } export default class App extends Component<AppProps, AppState> { constructor(props: AppProps) { super(props); this.increase = this.increase.bind(this); this.decrease = this.decrease.bind(this); this.state = { count: 0 }; } private decrease() { this.setState({ count: this.state.count - 1 }); } private increase() { this.setState({ count: this.state.count + 1 }); } render() { var { count } = this.state; return <> <h1>Hello World!</h1> <div> <button type="button" onClick={this.decrease}>-</button> {count} <button type="button" onClick={this.increase}>+</button> </div> <CollapseBody open={count % 2 === 0}> asdasdas </CollapseBody> </>; } } 接下来我们看看效果 我们可以看到按钮时class在切换 接下来编写样式 展开时高度是calc-size(auto, size);收起时,高度是0;在加以transition和overflow就完成了。 我们试一下,在高版本正常过渡,低版本由于不支持calc-size(auto, size),于是高度为默认值auto,没有过渡动画,但是不影响使用。 .collapse-body { transition: height .3s; overflow-y: hidden; height: calc-size(auto, size); } .collapse-body_close { height: 0; } overflow和display优化 上面代码虽然能用但是还不够完美,有2个问题。 首先容器含有overflow:hidden,会导致内部内容被截断,如果内部内容还有box-shadow,很容易被截掉。最好是只在过渡时含有overflow:hidden。 还有收起后应当含有disaplay:none,否则收起后仍然占据体积,在一些情况下会出现不必要的滚动条。 我们可以使用animation进行改造。 .collapse-body_close { display: none; } @supports(height: calc-size(auto, size)) { .collapse-body_open { animation: collapseBodyIn .3s; } .collapse-body_close { animation: collapseBodyOut .3s; } } @keyframes collapseBodyIn { from { overflow-y: hidden; height: 0; } to { overflow-y: hidden; height: calc-size(auto, size); } } @keyframes collapseBodyOut { from { overflow-y: hidden; display: block; height: calc-size(auto, size); } to { overflow-y: hidden; display: block; height: 0; } } 出现动画 上面示例首次出现时也有动画,假如不想要首次出现的动画,只有切换时才有动画,可以在组件上控制。 import * as React from "react"; import { Component } from "react"; import "./CollapseBody.scss"; export interface CollapseBodyProps { open?: boolean; } export class CollapseBody extends Component<CollapseBodyProps> { private first = true; componentDidMount(): void { this.first = false; } render() { let { open, children } = this.props; let classList = ["collapse-body"]; if(!open) { classList.push('collapse-body_close'); } else if(!this.first) { classList.push('collapse-body_open'); } return <div className={classList.join(" ")}> {children} </div>; } } 最后看看效果 非常的完美 最后我们再看看低版本浏览器的效果 先点构建,我这里配置的构建脚本已经,包含了语法转义和polyfill,也用了anujs,因此react的兼容性可以不用操心,我们只看CSS效果。 我们直接上难度挑战IE6,我们发现在在IE6中没有过渡效果,而是直接隐藏显示,并不影响实际使用,非常地优雅

优秀的个人博客,低调大师

ModStartBlog v9.1.0 桌面快捷应用,图片上传前端压缩

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议。 功能特性 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完整的API调用 大文件分片上传,进度条显示,已上传文件管理 强大的模块扩展功能,所有模块可以无缝集成,支持在线安装、卸载模块 完善的开发助手,实现模块、主题的的一键创建 完善的后台权限管理,支持基于RBAC的权限管理系统 后台管理支持使用手机、平板、PC,无论何时何地都可方便管理 第三方登录(QQ、微信、微博、支付宝、微信小程序) 第三方支付支持(微信、支付宝、支付宝当面付、微信扫码、微信小程序) 第三方云存储支持,支持云储存分片上传(阿里云、百度云、华为云、腾讯云、FTP、七牛云、UCloud、又拍云) 第三方短信支持(阿里云、腾讯云、华为云、百度云、253云通讯、聚合、七牛云、融云、赛邮、UCloud、云片、网易云) V9.1.0版本更新 2024年03月14日ModStartBlog发布v9.1.0版本,增加了以下22个特性: [新功能] Redis 增加 isEnableSuccess 判断是否启用成功 [新功能] Display 组件 asLink 参数支持回调模式,支持自定义链接 [新功能] 分类快捷操作工具类 CategoryUtil [新功能] JS 库增加【ijs】类型字符串,支持默认可执行代码 [新功能] 系统全局消息提示 UI 全新优化 [新功能] JS 库增加 markdown 操作工具类,支持 markdown 转 html [新功能] Curl 工具类请求增加 writeFunctionCallback 参数,支持流式请求 [新功能] 桌面快捷应用,支持将网页快捷方式添加到桌面(安装 DesktopApp) [新功能] 富文本编辑器迷你版增加 markdown 内容导入功能 [新功能] 图片上传是否压缩可通过配置文件配置(默认开启压缩) [新功能] Decimal 组件增加 unit、unitPosition 属性,支持单位显示 [新功能] JS 库增强 MS.ui.elementMover,支持元素动态移动效果 [新功能] 默认图标增加抖音图标(iconfont icon-douyin) [系统优化] 后台首页概况页面重构完成 [系统优化] 后台管理首页服务器信息显示优化 [系统优化] GridFilter 筛选 range 查找逻辑优化 [系统优化] 后台登录界面左侧宽度自动增加样式问题,标题边距调整 [系统优化] 模块管理模块缓存优化,模块存在真实性判断 [系统优化] 后台登录界面自适应不同设备,界面升级 [系统优化] 搜索引擎蜘蛛检测库优化 [Bug修复] 开启图片压缩,图片压缩失败的情况下继续上传 [Bug修复] 多语言部分书写错误 功能特性 图片上传是否压缩可通过配置文件配置(默认开启压缩) 系统全局消息提示 UI 全新优化 后台登录界面自适应不同设备,界面升级 后台管理首页服务器信息显示优化 桌面快捷应用,支持将网页快捷方式添加到桌面(安装 DesktopApp) 模块市场一键安装 系统内置模块市场,有行业应用、插件、云存储、云短信等功能模块,后台支持一键安装、启用、禁用、卸载,可快速搭建属于自己的系统应用。 系统演示与文档 码云仓库:https://gitee.com/modstart/ModStartBlog Github仓库:https://github.com/modstart/ModStartBlog 系统演示:https://blog.demo.tecmz.com/ 下载试用:https://modstart.com/download 开发者文档:https://modstart.com/doc 模块市场:https://modstart.com/store

优秀的个人博客,低调大师

ModStartCMS v8.1.0 图片前端压缩,抖音授权登录

ModStart 是一个基于 Laravel 模块化极速开发框架。模块市场拥有丰富的功能应用,支持后台一键快速安装,让开发者能快的实现业务功能开发。 系统完全开源,基于 Apache 2.0 开源协议,免费且不限制商业使用。 功能特性 丰富的模块市场,后台一键快速安装 会员模块通用且完整,支持完整的API调用 大文件分片上传,进度条显示,已上传文件管理 强大的模块扩展功能,所有模块可以无缝集成,支持在线安装、卸载模块 完善的开发助手,实现模块、主题的的一键创建 完善的后台权限管理,支持基于RBAC的权限管理系统 后台管理支持使用手机、平板、PC,无论何时何地都可方便管理 第三方登录(QQ、微信、微博、支付宝、微信小程序) 第三方支付支持(微信、支付宝、支付宝当面付、微信扫码、微信小程序) 第三方云存储支持,支持云储存分片上传(阿里云、百度云、华为云、腾讯云、FTP、七牛云、UCloud、又拍云) 第三方短信支持(阿里云、腾讯云、华为云、百度云、253云通讯、聚合、七牛云、融云、赛邮、UCloud、云片、网易云) V8.1.0版本更新 2024年02月28日ModStartCMS发布v8.1.0版本,增加了以下20个特性: [新功能] 富文本编辑器迷你版增加 markdown 内容导入功能 [新功能] JS 库增强 MS.ui.elementMover,支持元素动态移动效果 [新功能] Decimal 组件增加 unit、unitPosition 属性,支持单位显示 [新功能] 用户积分新增冻结、提交、取消三阶段操作功能 [新功能] 用户积分流水增加其他信息,支持冻结交易、管理员变更等信息展示 [新功能] 用户积分后台操作支持记录管理员 ID [新功能] 后台用户钱包流水增加其他信息,可记录后台管理员变更信息 [新功能] 用户前台积分冻结记录显示功能 [新功能] 图片上传是否压缩可通过配置文件配置(默认开启压缩) [新功能] 默认图标增加抖音图标(iconfont icon-douyin) [新功能] Redis 增加 isEnableSuccess 判断是否启用成功 [新功能] 用户删除事件触发 MemberUserDeletedEvent [新功能] 进程运行命令runInNewProcess,支持进程隔离运行 [新功能] 时间工具类增加tomorrowDate方法 [新功能] UEditorPlus 版本到 3.8.0 [新功能] Form 表单组件增加 hookResponse 属性,支持自定义返回数据 [新功能] 文件上传事件增加参数,用于区别用户、后台等文件上传类型 [新功能] Select 组件增加 gridEditable 属性,支持表格编辑模式 [系统优化] 异常错误日志 URL 获取优化,提高定位效率 [Bug修复] 用户删除自动清除授权登录信息 功能特性 用户积分流水增加其他信息,支持冻结交易、管理员变更等信息展示 后台用户钱包流水增加其他信息,可记录后台管理员变更信息 用户前台积分冻结记录显示功能 图片上传是否压缩可通过配置文件配置(默认开启压缩) 模块市场一键安装 系统内置模块市场,有行业应用、插件、云存储、云短信等功能模块,后台支持一键安装、启用、禁用、卸载,可快速搭建属于自己的系统应用。 系统演示与文档 码云仓库:https://gitee.com/modstart/ModStartCMS Github仓库:https://github.com/modstart/ModStartCMS 系统演示:https://cms.demo.tecmz.com/ 下载试用:https://modstart.com/download 开发者文档:https://modstart.com/doc 模块市场:https://modstart.com/store

资源下载

更多资源
腾讯云软件源

腾讯云软件源

为解决软件依赖安装时官方源访问速度慢的问题,腾讯云为一些软件搭建了缓存服务。您可以通过使用腾讯云软件源站来提升依赖包的安装速度。为了方便用户自由搭建服务架构,目前腾讯云软件源站支持公网访问和内网访问。

Nacos

Nacos

Nacos /nɑ:kəʊs/ 是 Dynamic Naming and Configuration Service 的首字母简称,一个易于构建 AI Agent 应用的动态服务发现、配置管理和AI智能体管理平台。Nacos 致力于帮助您发现、配置和管理微服务及AI智能体应用。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据、流量管理。Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。

Sublime Text

Sublime Text

Sublime Text具有漂亮的用户界面和强大的功能,例如代码缩略图,Python的插件,代码段等。还可自定义键绑定,菜单和工具栏。Sublime Text 的主要功能包括:拼写检查,书签,完整的 Python API , Goto 功能,即时项目切换,多选择,多窗口等等。Sublime Text 是一个跨平台的编辑器,同时支持Windows、Linux、Mac OS X等操作系统。

WebStorm

WebStorm

WebStorm 是jetbrains公司旗下一款JavaScript 开发工具。目前已经被广大中国JS开发者誉为“Web前端开发神器”、“最强大的HTML5编辑器”、“最智能的JavaScript IDE”等。与IntelliJ IDEA同源,继承了IntelliJ IDEA强大的JS部分的功能。

用户登录
用户注册