Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >CefSharp自定义滚动条样式

CefSharp自定义滚动条样式

作者头像
czwy
修改于 2023-10-27 07:27:06
修改于 2023-10-27 07:27:06
62700
代码可运行
举报
文章被收录于专栏:czwy的博客czwy的博客
运行总次数:0
代码可运行

在WinForm/WPF中使用CefSharp混合开发时,通常需要自定义滚动条样式,以保证应用的整体风格统一。本文将给出一个简单的示例介绍如何自定义CefSharp中滚动条的样式。

基本思路

在前端开发中,通过CSS来控制滚动条的样式是件寻常的事情。CefSharp也提供了功能强大的API方便开发人员使用c#与JS进行交互。这也给我们提供了一个思路:在CefSharp加载完成后,使用其提供的ExecuteJavaScriptAsync方法注入JS和CSS代码来自定义滚动条样式。

实现细节

为了排除干扰以及方便介绍,本文直接从GitHub上下载CefSharp.MinimalExample的示例代码进行修改。 首先用CSS定义滚动条的样式,介绍滚动条组成部分以及通过CSS控制其样式的文章挺多,比如MDN Web Docs。这里直接贴代码。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
/*定义滚动条高宽及背景 高宽分别对应横竖滚动条的尺寸*/
::-webkit-scrollbar
{
    width: 6px;
    height: 6px;
    background-color: #FFF;
    cursor:pointer;
}
/*定义滚动条轨道 内阴影+圆角 */
::-webkit-scrollbar-track
{
    box-shadow: inset 0 0 6px rgba(155,155,155,0.3);
    border-radius: 5px;
    background-color: #FFF;
    cursor:pointer;
}
::-webkit-scrollbar-button
{
    display: none;
}
/*定义滑块 背景色+圆角*/
::-webkit-scrollbar-thumb
{
    border:1px solid #c6c6c6;
    border-radius: 5px;
    background: #c6c6c6;
    cursor:pointer;
    background-repeat: no-repeat;
    background-position:center;
}

接下来就是把CSS样式注入到CefSharp中,按照CefSharp的wiki描述,JavaScript脚本只能在V8Context中执行,并且是在Frame级别执行。对于没有上下文的在Frame,一旦在Frame加载,就可以使用IFrame.ExecuteJavaScriptAsync创建V8Context

在CefSharp中,IBrowserIFrame对象用于向浏览器发送命令和在回调方法中获取状态信息,每个IBrowser对象都有一个主IFrame对象表示顶层frame(MainFrame),零个或多个IFrame对象表示子frame。 为了尽早把CSS样式注入到CefSharp中,可以在监听Browser.FrameLoadEnd事件并执行脚本。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
public MainWindow()
{
    InitializeComponent();
    Browser.FrameLoadEnd += Browser_FrameLoadEnd;
}

private void Browser_FrameLoadEnd(object sender, FrameLoadEndEventArgs e)
{

    if (e.Frame.IsMain)
    {
        //这里的style就是上一个代码片段中css样式的字符串
        AddStyle(style);
    }
}

/// <summary>
/// 添加CSS样式表
/// </summary>
/// <param name="style">样式内容</param>
public void AddStyle(string style)
{
    if (string.IsNullOrEmpty(style)) return;

    StringBuilder sb = new StringBuilder();
    sb.AppendLine("{let script = document.createElement('style');");
    sb.Append("let node=document.createTextNode('").Append(style.Replace("\n", string.Empty).Replace("\r", string.Empty)).Append("');");
    sb.AppendLine("script.appendChild(node);");
    sb.AppendLine("let elements = document.getElementsByTagName('head');");
    sb.AppendLine("if(elements.length>0){elements[0].appendChild(script);}");
    sb.AppendLine("else if( (elements = document.getElementsByTagName('body')).length>0){elements[0].appendChild(script);}}");

    Browser.GetMainFrame().ExecuteJavaScriptAsync(sb.ToString());
}

实现效果如下,滚动条的样式已被修改。在CefSharp的DevTools中也可以看到注入的CSS样式。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-10-07,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
html div 隐藏滚动条样式,div滚动条样式隐藏与显示
DIV滚动条样式是可以设置的,CSS滚动条同样也可以显示与隐藏,对div设置滚动条,设置其横向滚动条和纵向滚动条样式应该怎么做呢?
全栈程序员站长
2022/09/14
9.6K0
CSS自定义滚动条的样式
本文会介绍CSS滚动条选择器,并在演示中展示如何在Webkit的内核浏览器和IE浏览器中,自定义一个横向以及一个纵向的滚动条。
前端林子
2018/11/24
6.7K3
CSS自定义滚动条的样式
学会使用 CSS 自定义滚动条,能让你做的产品更有用户体验!
自定义滚动条现在越来越流行,很值得研究一翻。为什么需要自定义滚动?浏览器的默认的滚动条让UI在多个操作系统中看起来不一致,使用定义滚动我们可以统一风格。
前端小智@大迁世界
2022/06/15
2.6K0
学会使用 CSS 自定义滚动条,能让你做的产品更有用户体验!
自定义 webkit 内核浏览器的滚动条样式
回想当年,你可以通过在可滚动的元素(例如 <body>)上使用非标准的 CSS 属性(例如 scrollbar-base-color 之类)来 自定义 IE(5.5) 浏览器滚动条样式,并且可以实现 rad-scrollbars。不过后来 IE 弃用了它们。
疯狂的技术宅
2019/03/27
1.3K0
自定义 webkit 内核浏览器的滚动条样式
CSS横向滚动条自定义样式
接上一篇,有的时候在项目里面会使用到滚动条 但是浏览器默认的滚动条的样式不怎么好看 这个时候需要进行一些处理 一般用到两种 1:隐藏滚动条,但是可以支持滚动的方法
王小婷
2019/10/24
7.9K0
css控制滚动条透明,CSS控制滚动条样式的解析
我们在之前的两篇文章中,我们给大家介绍了关于CSS设置div滚动条样式、以及CSS3自定义滚动条样式的实例, 都知道当内容超出容器时,容器会出现滚动条,那我们如何使用CSS控制滚动条样式的呢?今天就给大家详细介绍!
全栈程序员站长
2022/07/23
6.5K0
css控制滚动条透明,CSS控制滚动条样式的解析
如何使用 CSS 设置和自定义水平和垂直滚动条
滚动条是图形用户界面(UI)中必不可少的组件。滚动条允许用户查看超出其容器宽度或高度的内容。滚动条还使用户能够查看超出屏幕宽度或高度的内容。默认情况下,浏览器会为body内容的溢出包含一个滚动条。在其他情况下,UI开发人员必须设置滚动条以使用户能够查看超出屏幕或特定容器的内容。每个浏览器都有一组默认的滚动条样式。在某些情况下,您可能有充分的理由来定制滚动条。例如,您可以定制滚动条样式以匹配网站的外观和感觉。
zayyo
2024/02/10
2.8K0
CSS3自定义滚动条样式 -webkit-scrollbar
webkit支持拥有overflow属性的区域,列表框,下拉菜单,textarea的滚动条自定义样式,所以用处还是挺大的。当然,兼容所有浏览器的滚动条样式目前是不存在的。
山河木马
2019/03/05
2.5K0
css定义浏览器滚动条样式-实现客服访客聊天界面滚动样式【唯一客服】
可以使用 CSS 的 ::-webkit-scrollbar 伪元素来自定义 Webkit 内核的浏览器(例如 Chrome、Safari)中的滚动条样式。该伪元素可以用来设置滚动条的宽度、高度、背景色、圆角、滑块样式等属性。以下是一个示例代码,演示如何自定义滚动条的样式:
唯一Chat
2023/03/10
8340
如何更改滚动条样式?
如何自定义浏览器的滚动条呢,下面给大家讲解一下,其实很简单,通过设定css样式就可以实现。
申霖
2019/12/27
2.8K0
如何更改滚动条样式?
滚动条样式全局修改
滚动条样式是当前浏览器的样式,以webkit内核为准。改的全局样式。不单单是elementUI样式
全栈程序员站长
2022/09/07
1.6K0
Element 修改 table 里面的滚动条样式
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127290.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/25
1K0
自定义滚动条样式(layui.v1)
来源于 layui css 代码 ::-webkit-scrollbar { width: 10px; height: 10px; } ::-webkit-scrollbar-button, ::-webkit-scrollbar-button:vertical { display: none; } ::-webkit-scrollbar-track, ::-webkit-scrollbar-track:vertical { background-color: black; } ::-web
易墨
2018/09/14
3.7K0
自定义滚动条样式(layui.v1)
CSS设置浏览器滚动条样式及隐藏滚动条
虽然大多数人不会关注到滚动条的样式,但是有一些网站还是对滚动条进行了优化,比如网易邮箱。我们可以用 CSS 来设置浏览器的滚动条样式,下面整理一下 CSS 滚动条的几个属性及代表的意思。
德顺
2019/11/12
21.4K0
CSS如何修改滚动条的样式?
css修改滚动条默认样式 html <div class="inner"> <div class="innerbox"> <p style="height:200px;">这是内容111</p> <p style="height:400px;">这里是内容222</p> <p>这里是内容333</p> </div> </div> css  .inner{ width: 265px; height
江一铭
2022/06/16
2.6K0
CefSharp请求资源拦截及自定义处理
在CefSharp中,我们不仅可以使用Chromium浏览器内核,还可以通过Cef暴露出来的各种Handler来实现我们自己的资源请求处理。
w4ngzhen
2023/10/18
1.5K0
CefSharp请求资源拦截及自定义处理
css实现横向滚动条(css纵向滚动条)
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/127724.html原文链接:https://javaforall.cn
全栈程序员站长
2022/07/25
8.2K0
css实现横向滚动条(css纵向滚动条)
浏览器滚动条的自定义和隐藏
---- 我们在处理业务的时候,偶尔会因为某些非抵抗力因素,需要对浏览器的滚动条进行处理,以提升产品的体验。本文我们来谈谈关于浏览器滚动条的自定义和隐藏 😊 自定义滚动条 首先,我们来认识滚动条的那些选择器。对于 webkit 内核的浏览器,滚动条有以下的选择器: 名称 用途 scrollbar 滚动条 - 占据指定的宽高 scrollbar-track 滚动条的轨道 scrollbar-corner 滚动条的底角,水平和垂直位置相遇的地方。 scrollbar-button 滚动条的上下按钮 mac 上俺
Jimmy_is_jimmy
2022/12/10
2.4K0
vue中改变滚动条样式(CSS)
scrollbar.css @charset "utf-8"; ::-webkit-scrollbar { width: 5px; } /*定义滚动条轨道 内阴影+圆角*/ ::-webkit-scrollbar-track { border-radius: 10px; background-color: rgba(0,0,0,0.1); } /*定义滑块 内阴影+圆角*/ ::-webkit-scrollbar-thumb {
Twcat_tree
2022/11/30
2K0
【现代 CSS】标准滚动条控制规范
使用 scrollbar-width 和 scrollbar-color 属性设置滚动条的样式。
Cell
2024/06/29
4760
【现代 CSS】标准滚动条控制规范
相关推荐
html div 隐藏滚动条样式,div滚动条样式隐藏与显示
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验