对比某个不存在的视频网站(YouTube),以及B站的播放模式,普通模式以及网页全屏之间都有一个“中间档”,油管的叫 剧场模式,B站的叫 宽屏模式

剧场模式

宽屏模式

  相比之下,还是更喜欢油管的剧场模式,主打一个沉浸感。应该还是可以实现的。

文章目录

  • 一、简单分析
  • 二、开整
  • 三、最终效果

一、简单分析

以宽屏模式为基础的话,看着实现起来还是很简单的:

  • 找到视频节点的标签

    • 将其宽度设置为 100% 页面宽度
  • 同样的找到顶部导航栏
    • 背景颜色设置为黑色
    • 字体、图标设置为白色

二、开整

先在浏览器开发者工具里通过调试,试着实现一下效果
✨中心思路就是:先把视屏调整到浏览器宽度(剧场模式核心),其它的小细节再慢慢调整。

  啊嘶,这个标签嵌套搞得很难受,某一层需要去掉padding,另一层需要修改对其方式,还有一层需要同步高度,布局方式跟想的不太一样,有点错综,节点顺序、样式可能需要互换调整,调整之后出现的各种意想不到的bug…

三、最终效果

  • 点击标题后可切换剧场模式、普通模式


代码:

// ==UserScript==
// @name         Bilibili 剧场播放
// @namespace    http://tampermonkey.net/
// @version      0.1
// @description  Bilibili剧场模式
// @author       pxoxq
// @match        https://www.bilibili.com/video/**
// @icon         https://www.google.com/s2/favicons?sz=64&domain=bilibili.com
// @require      https://lib.sinaapp.com/js/jquery/3.1.0/jquery-3.1.0.min.js
// ==/UserScript==
const playerHeigh = 750
const widePlayerStyles = `
.bpx-player-ctrl-wide{
width:0px;}
#wide-box::-webkit-scrollbar{
display:none;
}
#wide-box{
scrollbar-width:0;
}
#wide-box #bilibili-player{width: 100vw !important;
}
#wide-box #playerWrap{order: -1;height: ${playerHeigh}px;
}
#wide-box #bilibili-player{
height:${playerHeigh}px;
}
#wide-box .left-container.scroll-sticky{display: flex;flex-direction: column;
}
#wide-box div.right-container.is-in-large-ab{margin-top: ${playerHeigh}px;
}
#wide-box #danmukuBox{margin-top: 0;}
#wide-box div.video-container-v1{padding: 0;justify-content: left;
}
#wide-box .left-container.scroll-sticky>div:not(#playerWrap){margin-left:100px;
}
#wide-box #biliMainHeader .bili-header__bar{background-color: #000;
}
#wide-box #biliMainHeader .bili-header__bar a.default-entry{
color:white;}
#wide-box #biliMainHeader .bili-header__bar li svg{color: white}
#wide-box .mini-header .right-entry .right-entry__outside .right-entry-text{color:white}
`
function injectStyle(styleStr, nodeId='pxo'){$('head').append(`<style id="${nodeId}">${styleStr}</style>`)
}
function getRightBoxMarginTop(){return $('#danmukuBox').css('margin-top')
}
function genWidePlayerStyle(){const rightMarginTop = getRightBoxMarginTop()return widePlayerStyles.replace('@rightBoxMarginTop', rightMarginTop)
}
function wideModeInit(){injectStyle(widePlayerStyles)$('#viewbox_report').click(wideModeToggle)
}function wideModeToggle(){$('.bpx-player-ctrl-wide').click()const mainBox = 'body'const boxId = $(mainBox).attr('id')let newId = ''if(!boxId){newId = 'wide-box'}$(mainBox).attr('id', newId)
}
function _init(){wideModeInit()
}
(function() {'use strict';_init()
})();

油猴脚本-Bilibili剧场模式仿Youtube相关推荐

  1. 杂谈技术·油猴脚本的功能实现

    投稿地址: https://www.bilibili.com/read/cv15714192 原文简介 核心原理 核心原理其实超级简单,简单说就是通过DOM技术找到网页上面的关键点,然后将网页上的页面 ...

  2. 我的第一个油猴脚本--微博超话自动签到

    简介 用户脚本是一段代码,它们能够优化您的网页浏览体验.安装之后,有些脚本能为网站添加新的功能,有些能使网站的界面更加易用,有些则能隐藏网站上烦人的部分内容.其中常见的有 油猴插件.ChromeExt ...

  3. tampermonkey油猴插件|tampermonkey油猴脚本

    让你的电脑浏览器使用起来更加强大吗?那么可以试试tampermonkey油猴插件,这是专门为市面上主流常见的chrome谷歌浏览器.firefox火狐.360浏览器.Microsoft Edge.Op ...

  4. [原创方法!] 如何实现全自动登录各大网站? Cookie格式 、油猴脚本基础 解决Github邮箱验证,持久登录,免验证码

    之前电脑内存小, 谷歌浏览器又是内存怪物, 每次浏览器不用的时候总是习惯关掉. 这就导致了每次进入常用的网站就要重新登陆, 非常烦;  对! 就是即使浏览器保存了密码, 大部分网站仍然要输入一下验证码 ...

  5. 油猴脚本Tampermonkey的简介和安装使用,五分钟安装

    什么是油猴脚本 Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它支持以下浏览器,Chrome,Microsoft Edge,Safari,Opera Next,Firef ...

  6. chrome拓展以及油猴脚本推荐

    可以下载chrome拓展的网站 --> 拓展迷 拓展推荐 用途 Tampermonkey 几乎万能 Adblock Plus 免费的广告拦截器 Infinitypro 新标签页 JSON Vie ...

  7. 基于谷歌油猴脚本观看视频

    一.下载.安装chrome浏览器 下载地址:https://download.csdn.net/download/Abel_Huang_/15436666 下载完成一路确认下去就安装好了 二.下载油猴 ...

  8. [油猴脚本开发指南]脚本ajax的跨域请求

    转载自油猴中文网:bbs.tampermonkey.net.cn 李恒道QQ4548212 油猴中文网bbs.tampermonkey.net.cn TamperMonkey GreaseMonkey ...

  9. 【油猴脚本】生成纯元素CSS选择器(附开发笔记)

    脚本介绍 用途 常见的CSS选择器: #gatsby-focus-wrapper > div > div > div.Box-nv15kw-0.Flex-arghxi-0.layou ...

最新文章

  1. 利用UIWebView获取userAgent需要注意的地方
  2. 【控制】《现代控制理论》谢克明老师-第7章-线性系统的状态估计
  3. 微信小程序验证车牌号(含新能源车牌)
  4. Python 字典类型的使用
  5. linux 的git的安装目录,Linux下Git安装及配置较详细-Go语言中文社区
  6. 超标量体系结构_CPU体系结构以及指令流水原理
  7. 【Python】Python中的for循环,没你想的那么简单~
  8. 给Hangfire的webjob增加callback和动态判断返回结果功能设计
  9. [转载] 字符串最长重复子串python_查找字符串中重复字符的最长子字符串
  10. 【Nowcoder - 5666 H Minimum-cost Flow】2020牛客暑期多校训练营(第一场)【最小费用流变形】
  11. C语言实数除法怎样保留小数(编程技巧)
  12. 实战PHP皮皮虾去水印解析接口
  13. a标签下载图片 text
  14. JavaEE | 增强for循环
  15. Fusion APP-检查软件更新-远程公告
  16. 京东云云主机试用体验
  17. 英文 程序员编程技能描述_程序员最重要的非编程技能
  18. mmsegmentation 训练自制数据集
  19. CSDN快速涨粉秘笈---涨粉速度提升30倍
  20. 【编译原理】自上而下语法分析(CC++源码+实验报告)

热门文章

  1. MVC 模式 定义概念及使用
  2. 商贸misc部分简单题目思路
  3. Gnome安装及个性化设置
  4. Mybatis-Plus时间范围查询
  5. taobao.refund.get( 获取单笔退款详情 )
  6. 【解决方案】log4j2配置日志打印时区
  7. STM32 BSRR BRR ODR 寄存器解析(F4系列已经去掉BRR寄存器了)
  8. Mit Mini Cheetah开源代码开发环境搭建
  9. MySQL-电商数据建表
  10. 蓝牙AirTag防丢findmy