潍坊网站排名推广网页浏览器推荐

diannao/2025/10/25 10:52:12/文章来源:
潍坊网站排名推广,网页浏览器推荐,网站维护与建设内容,网页游戏源码怎么获取系列文章使用 abp cli 搭建项目给项目瘦身#xff0c;让它跑起来完善与美化#xff0c;Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API#xff0c;包装返回模型再说Swagger#xff0c;分组、描述、小绿锁接入GitHub#xff0c;用JWT保护你的API异常处理和… 系列文章使用 abp cli 搭建项目给项目瘦身让它跑起来完善与美化Swagger登场数据访问和代码优先自定义仓储之增删改查统一规范API包装返回模型再说Swagger分组、描述、小绿锁接入GitHub用JWT保护你的API异常处理和日志记录使用Redis缓存数据集成Hangfire实现定时任务处理用AutoMapper搞定对象映射定时任务最佳实战一定时任务最佳实战二定时任务最佳实战三博客接口实战篇一博客接口实战篇二博客接口实战篇三博客接口实战篇四博客接口实战篇五Blazor实战系列一上一篇搭建了 Blazor 项目并将整体框架改造了一下本篇将完成用 C# 代码代替 JavaScript 实现几个小功能说是代替但并不能完全不用 JavaScript应该说是尽量不用吧。二维码显示与隐藏可以看到当我鼠标移入的时候显示二维码移出的时候隐藏二维码。这个功能如果是用JavaScript来完成的话肯定首先想到的是HTML的 Mouse 事件属性那么在Blazor中也是一样的给我们实现了各种on*事件。打开index.razor页面给微信图标那个 NavLink 标签添加两个事件onmouseover和onmouseout。... NavLink classlink-item weixin title扫码关注微信公众号『阿星Plus』查看更多。 onmouseoverHover onmouseoutHoveri classiconfont iconweixin/i /NavLink ... 当鼠标移入移出的时候都执行我们自定义的一个方法Hover()。C# 代码写在code{}花括号中实现显示和隐藏原理是利用css默认是隐藏的当显示的时候将具有隐藏属性的class值去掉就可以了。所以可以添加两个字段一个用于判断当前是否处于隐藏状态一个用来存储class的值。/// summary /// 是否隐藏 /// /summary private bool IsHidden true;/// summary /// 二维码CSS /// /summary private string QrCodeCssClass IsHidden ? hidden : null; 当IsHidden trueQrCodeCssClass hidden当IsHidden falseQrCodeCssClass null。那么在Hover()方法中不断修改IsHidden的值就可以实现效果了。/// summary /// 鼠标移入移出操作 /// /summary private void Hover() IsHidden !IsHidden; 最后将QrCodeCssClass变量赋值给二维码图片所在的div上。... div classqrcode QrCodeCssClassimg srchttps://static.meowv.com/images/wx_qrcode.jpg / /div ... 大功告成index.razor完整代码如下page /div classmaindiv classcontainerdiv classintrodiv classavatara hrefjavascript:;img srchttps://static.meowv.com/images/avatar.jpg/a/divdiv classnickname阿星Plus/divdiv classdescriptionp生命不息奋斗不止brCease to struggle and you cease to live/p/divdiv classlinksNavLink classlink-item titlePosts hrefpostsi classiconfont iconread/i/NavLinkNavLink target_blank classlink-item titleNotes hrefhttps://notes.meowv.com/i classiconfont iconnotes/i/NavLinkNavLink target_blank classlink-item titleAPI hrefhttps://api.meowv.com/i classiconfont iconapi/i/NavLinkNavLink classlink-item titleManage href/account/authi classiconfont iconcode/i/NavLinkNavLink target_blank classlink-item titleGithub hrefhttps://github.com/Meowv/i classiconfont icongithub/i/NavLinkNavLink classlink-item weixin title扫码关注微信公众号『阿星Plus』查看更多。 onmouseoverHover onmouseoutHoveri classiconfont iconweixin/i/NavLinkdiv classqrcode QrCodeCssClassimg srchttps://static.meowv.com/images/wx_qrcode.jpg //div/div/div/div /divcode {/// summary/// 是否隐藏/// /summaryprivate bool IsHidden true;/// summary/// 二维码CSS/// /summaryprivate string QrCodeCssClass IsHidden ? hidden : null;/// summary/// 鼠标移入移出操作/// /summaryprivate void Hover() IsHidden !IsHidden; } 菜单显示与隐藏菜单是在小屏幕上才会出现的相信看完了二维码的显示与隐藏这个菜单的显示与隐藏就好办了吧实现方法是一样的菜单按钮是在头部组件Header.razor中的包括主题切换功能所以下面代码都在Header.razor里面。code {/// summary/// 下拉菜单是否打开/// /summaryprivate bool collapseNavMenu false;/// summary/// 导航菜单CSS/// /summaryprivate string NavMenuCssClass collapseNavMenu ? active : null;/// summary/// 显示/隐藏 菜单/// /summaryprivate void ToggleNavMenu() collapseNavMenu !collapseNavMenu; } 默认是不打开的collapseNavMenu false。然后根据collapseNavMenu值为NavMenuCssClass给定不同的class。... nav classnavbar-mobilediv classcontainerdiv classnavbar-headerdivNavLink classmenu-item href MatchNavLinkMatch.All????阿星Plus/NavLinkNavLinknbsp;·nbsp;Light/NavLink/divdiv classmenu-toggle onclickToggleNavMenu#9776; Menu/div/divdiv classmenu NavMenuCssClassNavLink classmenu-item hrefpostsPosts/NavLinkNavLink classmenu-item hrefcategoriesCategories/NavLinkNavLink classmenu-item hreftagsTags/NavLinkNavLink classmenu-item apps hrefappsApps/NavLink/div/div /nav ... 与二维码显示与隐藏唯一区别就是这里是点击按钮不是移入移出所以菜单显示与隐藏需要用到onclick方法。主题切换哇这个主题切换真的是一言难尽当切换主题的时候需要记住当前的主题是什么当刷新页面或者跳转其他页面的时候主题状态是需要一致的默认是白色主题当切换暗黑色主题后其实是在body上加了一个class。在Blazor实在是不知道用什么办法去动态控制body的样式所以这里我想到了一个办法写几个全局的JavaScript方法然后再Blazor中调用要知道他们是可以互相调用的于是问题迎刃而解。添加app.js文件放在 /wwwroot/js/ 下面。var func window.func || {};func {setStorage: function (name, value) {localStorage.setItem(name, value);},getStorage: function (name) {return localStorage.getItem(name);},switchTheme: function () {var currentTheme this.getStorage(theme) || Light;var isDark currentTheme Dark;if (isDark) {document.querySelector(body).classList.add(dark-theme);} else {document.querySelector(body).classList.remove(dark-theme);}} }; 这里写了三个方法设置localStoragesetStorage(name,value)获取localStoragegetStorage(name)切换主题switchTheme()localStorage 是浏览器以 name:value 形式的本地存储对象。switchTheme主要做的事情就是判断当前主题如果是暗黑就给body加上对应的class如果不是就去掉。然后在 index.html 中引用。... bodyappdiv classloader/div/appscript srcjs/app.js/scriptscript src_framework/blazor.webassembly.js/script /body ... 有了这个三个全局的JavaScript方法切换主题就变得简单多了看代码。... /// summary /// 当前主题 /// /summary private string currentTheme;/// summary /// 初始化 /// /summary /// returns/returns protected override async Task OnInitializedAsync() {currentTheme await JSRuntime.InvokeAsyncstring(window.func.getStorage, theme) ?? Light;await JSRuntime.InvokeVoidAsync(window.func.switchTheme); } ... 注意在Blazor调用JavaScript方法需要注入IJSRuntime接口inject IJSRuntime JSRuntime。新建一个变量currentTheme在生命周期函数初始化的时候去调用JavaScript中的getStorage方法获取当前主题考虑到第一次访问的情况可以给一个默认值为Light表示白色主题然后再去调用switchTheme执行切换主题的方法。这样页面就会根据localStorage的值来确定当前的主题。... /// summary /// 切换主题 /// /summary private async Task SwitchTheme() {currentTheme currentTheme Light ? Dark : Light;await JSRuntime.InvokeVoidAsync(window.func.setStorage, theme, currentTheme);await JSRuntime.InvokeVoidAsync(window.func.switchTheme); } ... SwitchTheme()是切换主题的方法当我们点击input按钮时可以任意切换并且主题还要实时跟着变化。当点击按钮执行SwitchTheme()时候改变currentTheme的值然后将currentTheme传递给JavaScript方法setStorage最后再次执行切换主题的JavaScript方法即可。此时变量currentTheme也发挥了不少作用在小屏幕下会显示当前主题的名称Dark or Light可以直接将currentTheme在HTML中赋值即可。并且我们input是checkbox类型当是黑色主题的时候需要时选中的状态白色主题的时候不选中这里就可以利用checked属性这样写checked(currentTheme Dark)。nav classnavbardiv classcontainer...div classmenu navbar-right...input idswitch_default typecheckbox classswitch_default onchangeSwitchTheme checked(currentTheme Dark) /label forswitch_default classtoggleBtn/label/div/div /nav nav classnavbardiv classcontainer...div classmenu navbar-right...input idswitch_default typecheckbox classswitch_default onchangeSwitchTheme checked(currentTheme Dark) /label forswitch_default classtoggleBtn/label/div/div /nav nav classnavbar-mobilediv classcontainerdiv classnavbar-headerdivNavLink classmenu-item href MatchNavLinkMatch.All????阿星Plus/NavLinkNavLink onclickSwitchThemenbsp;·nbsp;currentTheme/NavLink/divdiv classmenu-toggle onclickToggleNavMenu#9776; Menu/div/divdiv classmenu NavMenuCssClass.../div/div /nav OK搞定快去试试吧。优化代码现在看起来乱乱的并且设置获取localStorage属于公共的方法说不定以后也能用到我们将其封装一下便于日后的调用不然要写好多重复的代码。在Blazor项目根目录添加文件夹Commons在文件夹下添加一个Common.cs目前用到了IJSRuntime用构造函数注入然后写几个公共的方法。//Common.cs using Microsoft.JSInterop; using System.Threading.Tasks;namespace Meowv.Blog.BlazorApp.Commons {public class Common{private readonly IJSRuntime _jsRuntime;public Common(IJSRuntime jsRuntime){_jsRuntime jsRuntime;}/// summary/// 执行无返回值方法/// /summary/// param nameidentifier/param/// param nameargs/param/// returns/returnspublic async ValueTask InvokeAsync(string identifier, params object[] args){await _jsRuntime.InvokeVoidAsync(identifier, args);}/// summary/// 执行带返回值的方法/// /summary/// typeparam nameTValue/typeparam/// param nameidentifier/param/// param nameargs/param/// returns/returnspublic async ValueTaskTValue InvokeAsyncTValue(string identifier, params object[] args){return await _jsRuntime.InvokeAsyncTValue(identifier, args);}/// summary/// 设置localStorage/// /summary/// param namename/param/// param namevalue/param/// returns/returnspublic async Task SetStorageAsync(string name, string value){await InvokeAsync(window.func.setStorage, name, value);}/// summary/// 获取localStorage/// /summary/// param namename/param/// returns/returnspublic async Taskstring GetStorageAsync(string name){return await InvokeAsyncstring(window.func.getStorage, name);}} } 然后需要在Program.cs中注入。using Meowv.Blog.BlazorApp.Commons; using Microsoft.AspNetCore.Components.WebAssembly.Hosting; using Microsoft.Extensions.DependencyInjection; using System; using System.Net.Http; using System.Threading.Tasks;namespace Meowv.Blog.BlazorApp {public class Program{public static async Task Main(string[] args){var builder WebAssemblyHostBuilder.CreateDefault(args);builder.RootComponents.AddApp(app);builder.Services.AddTransient(sp new HttpClient { BaseAddress new Uri(builder.HostEnvironment.BaseAddress) });builder.Services.AddSingleton(typeof(Common));await builder.Build().RunAsync();}} } 紧接着在_Imports.razor中注入使用Commoninject Commons.Common Common。改造一下Header.razor全部代码如下headernav classnavbardiv classcontainerdiv classnavbar-header header-logoNavLink classmenu-item href/ MatchNavLinkMatch.All????阿星Plus/NavLink/divdiv classmenu navbar-rightNavLink classmenu-item hrefpostsPosts/NavLinkNavLink classmenu-item hrefcategoriesCategories/NavLinkNavLink classmenu-item hreftagsTags/NavLinkNavLink classmenu-item apps hrefappsApps/NavLinkinput idswitch_default typecheckbox classswitch_default onchangeSwitchTheme checked(currentTheme Dark) /label forswitch_default classtoggleBtn/label/div/div/navnav classnavbar-mobilediv classcontainerdiv classnavbar-headerdivNavLink classmenu-item href MatchNavLinkMatch.All????阿星Plus/NavLinkNavLink onclickSwitchThemenbsp;·nbsp;currentTheme/NavLink/divdiv classmenu-toggle onclickToggleNavMenu#9776; Menu/div/divdiv classmenu NavMenuCssClassNavLink classmenu-item hrefpostsPosts/NavLinkNavLink classmenu-item hrefcategoriesCategories/NavLinkNavLink classmenu-item hreftagsTags/NavLinkNavLink classmenu-item apps hrefappsApps/NavLink/div/div/nav /headercode {/// summary/// 下拉菜单是否打开/// /summaryprivate bool collapseNavMenu false;/// summary/// 导航菜单CSS/// /summaryprivate string NavMenuCssClass collapseNavMenu ? active : null;/// summary/// 显示/隐藏 菜单/// /summaryprivate void ToggleNavMenu() collapseNavMenu !collapseNavMenu;/// summary/// 当前主题/// /summaryprivate string currentTheme;/// summary/// 初始化/// /summary/// returns/returnsprotected override async Task OnInitializedAsync(){currentTheme await Common.GetStorageAsync(theme) ?? Light;await Common.InvokeAsync(window.func.switchTheme);}/// summary/// 切换主题/// /summaryprivate async Task SwitchTheme(){currentTheme currentTheme Light ? Dark : Light;await Common.SetStorageAsync(theme, currentTheme);await Common.InvokeAsync(window.func.switchTheme);} }实现过程比较简单相信你绝对学会了。本篇就到这里了未完待续...开源地址https://github.com/Meowv/Blog/tree/blog_tutorial

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

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

相关文章

济宁高端网站建设wordpress为什么性能差

默认情况下,springboot 初始的项目中都有一个 application.yml 或者 application.properties 文件,如果我们希望再定义一个独立的配置文件用来配置特定业务数据,而不希望把这些配置内容都堆积在 application 配置文件中,实现这个需…

阿里巴巴网站怎么做全屏大图网站建设费用包括哪些内容

题目: 如图6-8所示,可以用四分树来表示一个黑白图像,方法是用根结点表示整幅图像,然后把行列个分城两等分,按照图中的方式编号,从左到右对应4个子结点。如果某子结点对应的取余全白或全黑,则直…

莉莉卡是哪个网站做的windows搭建网站开发

资料: 著作权归作者所有。 商业转载请联系作者获得授权,非商业转载请注明出处。 作者:陈禹鲁 链接:http://www.zhihu.com/question/19809484/answer/35544452 来源:知乎 第一本,入门 《Head first HTML&…

网站建设制作设计推广优化初学者怎么制作平面图

高精度加法 1.题目2.基本思想3.代码实现4.总结 1.题目 给定两个正整数(不含前导 0),计算它们的和。 输入格式 共两行,每行包含一个整数。 输出格式 共一行,包含所求的和。 数据范围 1 ≤ 整数长度 ≤ 100000 1≤整…

网站备案添加域名邢台移动端网站建设

随着科技的飞速发展,人工智能(AI)已经从科幻小说中的概念变成了现实生活中的重要角色。AI大模型技术,作为人工智能领域的一项重要突破,如今已不再是一个新鲜词汇,而是正在深刻改变着我们的生活方式和工作模…

商城网站建设都有哪些类型大学高校网站建设栏目

目录 ACM金牌带你零基础直达C语言精通-课程资料 一.作用域的基本概念 二.函数 1. 函数的定义和使用 2.为什么一定要有函数结构 3.形参与实参 4.函数的声明和定义 5.递归函数 此代码中递归函数执行流程: 练习:求斐波那契数列第n项的值: 欧几里…

广州网站建设公司万齐网络科技html网站免费模板下载

本章概要 测试驱动开发 测试驱动 vs 测试优先 日志 日志信息日志等级 测试驱动开发 之所以可以有测试驱动开发(TDD)这种开发方式,是因为如果你在设计和编写代码时考虑到了测试,那么你不仅可以写出可测试性更好的代码&#xff…

网页设计素材图片黑白电脑优化系统的软件哪个好

java 泛型和类型擦除“编译期间擦除泛型”是常识&#xff08;好吧&#xff0c;类型参数和实参实际上是被擦除的&#xff09;。 这是由于“类型擦除”而发生的。 但这是错误的&#xff0c;正如许多开发人员所假设的那样&#xff0c;将<..>符号内指定的所有内容都删除了。 …

濮阳市网站怎么做宣传推荐做网站的话术

思科设备SSH登陆详细配置过程我们用GNS3进行拓扑搭建。实验拓扑图如下&#xff1a;进行完基本配置之后开始配置SSH服务器(R2)1.首先验证设备是否支持SSHR2#show ip ssh能够识别这条命令就说明支持。2.配置IP域名。使用config# ip domain-name domain-name全局配置模式命令配置网…

网站广告位有哪些网站二级目录怎么做

1. 类 1.1. 简介 TypeScript是面向对象的JavaScript。   类描述了所创建的对象共同的属性与方法。 1.2. 类的定义 class class_name { // 类作用域 }&#xff08;1&#xff09;定义类的关键字是class&#xff0c;后面紧跟类名&#xff0c;类可以包含以下几个模块&#xff…

光明新区城市建设局网站做网站要注册公司吗

1、考虑下列三种情况下&#xff0c;对比一下普通RNN的表现和LSTM和GRU表现&#xff1a; &#xff08;1&#xff09;早期观测值对预测未来观测者具有非常重要的意义。 考虑一个极端情况&#xff0c;其中第一个观测值包含一个校验和&#xff0c; 目标是在序列的末尾辨别校验和是…

自己有网站怎么推广wordpress网站设密码

线程组&#xff08; Threads &#xff08;Users&#xff09;&#xff09;理解&#xff1a;一个虚拟用户组&#xff0c;线程组内线程数量在运行过程中不会发生改变。 注意事项&#xff1a;线程间变量相互独立。 一个测试计划内可以包含多个线程组。 可定义内容&#xff1a; 取样…

建设网站公司浩森宇特深圳在建高铁站

你好&#xff0c;我是 shengjk1&#xff0c;多年大厂经验&#xff0c;努力构建 通俗易懂的、好玩的编程语言教程。 欢迎关注&#xff01;你会有如下收益&#xff1a; 了解大厂经验拥有和大厂相匹配的技术等 希望看什么&#xff0c;评论或者私信告诉我&#xff01; 文章目录 一…

金华兰溪网站建设河源正规网站建设价格

codevs 1040 统计单词个数 2001年NOIP全国联赛提高组 题目等级 : 黄金 Gold题目描述 Description给出一个长度不超过200的由小写英文字母组成的字母串(约定;该字串以每行20个字母的方式输入&#xff0c;且保证每行一定为20个)。要求将此字母串分成k份(1<k<40)&#xff0c…

网站建设要如何选择网站宣传推广

目录 1. 切换 Frame 2. 前进后退 3. 对 Cookies 操作 4. 选项卡管理(了解) 5. 异常处理 6. 反屏蔽 7. 无头模式 1. 切换 Frame 我们知道网页中有一种节点叫作 iframe&#xff0c;也就是子 Frame&#xff0c;相当于页面的子页面&#xff0c;它的结构和外部网页的结构完全…

如何用电脑做网站服务器网站后台管理系统地址

1 索引类型 返回面试宝典 主键索引&#xff08;PRIMARY&#xff09;:数据列不允许重复&#xff0c;不允许为NULL&#xff0c;一个表只能有一个主键。 唯一索引&#xff08;UNIQUE&#xff09;:数据列不允许重复&#xff0c;允许为NULL&#xff0c;一个表允许多个列创建唯一索引…

网站地图xml文件济南房产信息网官网

使用sealed关键字声明一个密封类或者接口 sealed interface Errorsealed class IOError(): Error密封类和接口能够很好的控制继承&#xff0c;在密封类和接口定义的模块和包外无法被继承 在编译期我们就已知了所有的密封类和接口的实现类。在某种意义上&#xff0c;密封类类似…

上街做网站微商代理

正题 题目链接:https://www.51nod.com/Contest/Problem.html#contestProblemId1149 题目大意 nnn个数&#xff0c;求有多少种选择方案使选择的数乘机为kkk。 解题思路 显然kkk的质因数最多只有999个&#xff0c;我们将质因数进行dpdpdp。若选择的数的质因数刚好是kkk的质因数…

网站建设越秀爱旅游网站制作

目录 一、Interconnects 1、Crossbars 二、Debugging 官网教程&#xff1a;gem5: Classic caches 默认缓存是一个带有MSHR&#xff08;未命中状态保持寄存器&#xff09;和WB&#xff08;写缓冲区&#xff09;的非阻塞缓存&#xff0c;用于读取和写入未命中。缓存还可以启用…

360怎么做网站搜索家庭电脑做网站

数据采集的方法&#xff1a; 1、API API又叫应用程序接口&#xff0c;是网站的管理者为了使用者方便&#xff0c;编写的一种程序接口。该类接口可以屏蔽网站底层复杂算法仅仅通过简单的调用即可实现对数据请求的功能。目前主流的社交媒体&#xff0c;比如微博、贴吧等均可提供…