js更改本地html字体大小页面位置不发生改变

HTML 基础知识:HTML 中的类、ID 和名称 假设,在上面的例子中;用于标识一组具有某些相似性的元素(例如,具有相同样式的元素或具有相同功能的元素)。的元素,我们给它一个红色的背景色。这不会引发任何警告,因为具有相同类名的不同元素是正常的。id 对于 HTML 页面中的每个元素都是唯一的,而多个元素可以具有相同的类。我们经常需要针对一个特定的元素或一组特定的元素来实现不同的功能,如样式。如果我们尝试为文档中的两个不同元素提供相同的 id,我们将收到警告。使用 id,我们可以轻松地使用 CSS 定位元素并操纵它们的样式。因此,假设我们要更改元素的背景。 阅读详情

做html页面小说阅读器时,发现更改webview的字体后,原来的位置不见了,因此想从js入手,改变字体大小后也能回到原来位置


具体做法:

先初始化webview 以及websettings,我在外部做了几个按钮,用来改变字体大小,调用的代码如下;

<span style="white-space:pre">	</span>            String js1 = " index = 0;\n"
                            + " nearIndex = null;\n"
                            + " var scrollTop  = document.body.scrollTop;\n"
                            + " var tags = document.getElementsByTagName(\"body\")[0].children;\n"
                            + " getNearIndex(tags, scrollTop);\n";
                    String js = "var d = document.getElementsByTagName('body')[0];\n"
                            + " d.style.fontSize = '" + font_size + "px';\n";
                    String js2 = " indexTemp = 0;\n"
                            + " skipScroll(tags, nearIndex);\n";

                    mWebView.loadUrl("javascript:(function(){" + js1+js+js2 + "})()");
                    SPUtils.setInt(UIUtils.getContext(), "mobifont", font_size);
这是通常的js做法,我刚开始是直接用js那一句,改变字体大小会发生变化,所以我现在加了两句 js1 +js2


还有一步你需要在初始化过程之前(加载html之前),提前给html写入一段js进去 如下:

final String path = UIUtils.getAppFile() + dirname + "/jingjing.html";
        String comment = mobi.openMobi(mFilePath + mFileName, dirname);
        //解决打不开的mobi情况 1.''是代表c解析不了的格式,?J是代表乱改后缀的格式
        if (comment.equals(""))
            comment = "?J";
        if (!comment.equals("?J")) {
            //js代码
            String result = comment.replace("</html>", "<script>" +
                    "   var index = 0;\n" +
                    "   var nearIndex = null;\n" +
                    "   var indexTemp = 0;\n" +
                    " function getNearIndex(tags, scrollTop) {\n" +
                    "        for (var i = 0; i < tags.length; i++) {\n" +
                    "            index++;\n" +
                    "            var tagTop = getPos(tags[i]);\n" +
                    "            if (tags[i].children.length > 0) {\n" +
                    "                getNearIndex(tags[i].children, scrollTop);\n" +
                    "            }else {if (parseInt(tagTop) > parseInt(scrollTop) && nearIndex==null) {//防止获取多层最近标签\n" +
                    "                    nearIndex = index;\n" +
                    "                    return;}}}}\n" +
                    "  function skipScroll(tags, nearIndex) {\n" +
                    "        for (var i = 0; i < tags.length; i++) {\n" +
                    "            indexTemp++;\n" +
                    "            console.log(indexTemp, nearIndex);\n" +
                    "            if (indexTemp == nearIndex) {\n" +
                    "                document.body.scrollTop = getPos(tags[i]);\n" +
                    "                return;\n" +
                    "            }\n" +
                    "            if (tags[i].children.length > 0) {\n" +
                    "                skipScroll(tags[i].children, nearIndex);\n" +
                    "            }}}\n" +
                    "  function getPos(o) {//取元素坐标\n" +
                    "            var  y = 0;\n" +
                    "            do {\n" +
                    "                y += o.offsetTop;\n" +
                    "            } while (o = o.offsetParent);\n" +
                    "            return y;\n" +
                    "        }\n" +
                    "   function toCatalog() {\n" +
                    "        var allTag = document.getElementsByTagName(\"a\");\n" +
                    "        for (var i = 0; i < allTag.length; i++) {\n" +
                    "            if (allTag[i].getAttribute(\"href\") != null) {\n" +
                    "                window.scrollTo(0, getPos(allTag[i]));//遍历所有a标签,找到第一个带有href属性的,获取高度,并跳出循环\n" +
                    "                break;\n" +
                    "            }\n" +
                    "        }\n" +
                    "    }</script></html>");
            writeFile(result, path);
            //webView.loadData(comment, "text/html; charset=UTF-8", null);
            //init local file
            mWebView.loadUrl("file://" + path);

提前写入备好的js根据滚动条位置查找最近P标签的位置。


这样就能使改变字体后也能回到原来位置的需求完成了。


最后附上在web端的代码:



前端开发入门:HTML、CSS和JavaScript全面指南 JavaScript是一种轻量级的编程语言,由Netscape公司于1995年首次发布。它是网页交互性实现的基石,几乎所有现代浏览器都支持JavaScript。通过使用JavaScript,开发者可以在用户与网页交互时,响应事件并动态地修改网页内容。在开始一个项目之前,理解项目的业务需求是至关重要的一步。例如,在构建一个个人博客项目时,我们需要明确博客的目标用户、功能需求和设计风格等要素。博客的设计风格应该简洁且专业,以下是一些基本的设计原则:配色方案。 阅读详情

相关推荐

组态王|组态王通过选择日期实现历史数据的查询

②在弹出的【插入通用控件】对话框选择【Calender Control】控件,然后点击【确定】按钮,关闭对话框,然后在画面上适当的位置按住鼠标左键并拖动,绘制出一个矩形框,放开鼠标,就完成了控件的绘制。此函数将指定的时间格式(年,月,日,时,分,秒)转换为以秒为单位的长整型数,转换的时间基准是UTC(格林尼治)1970年1月1日00:00:00。实现内容,通过两个日历控件选择开始日期和结束日期,然后点击【历史数据查询】按钮,在报表中显示对应时间段的数据集。另外你用过哪些组态软件?

做有价值的事,积累有价值的笔记! 4565

html浏览器进行缩放百分比 界面和文字保持不变

html浏览器进行缩放百分比 界面和文字保持不变

weixin_45441173的博客 4878

Akamai移动端Sensor数据采集与BMP风控机制深度解析

本文深度解析了Akamai在移动端风控中的核心机制,重点阐述了Sensor数据如何通过采集陀螺仪、加速度计等硬件信息,结合设备指纹生成连续且符合物理规律的行为轨迹。详细剖析了数据从采集、加密校验到通过BMP风控三重验证(校验位、时间差、数据逻辑)的完整流程,并提供了从模拟优化到自建风控模型的实用应对思路。

quiet的专栏 285

html内容与背景图片的相对位置保持不变 background-position: center

缩放屏幕的时候,希望背景图和内容元素的相对位置保持不变。background-position: center;

Kate_sicheng的博客 1502

每天10分钟,混剪视频Agent产出50条爆款,单月变现6位数(喂饭级教程)

混剪视频是指将多个视频片段、图片或音频素材进行剪辑组合,创造出新的视频内容。随着Coze上线联动剪映功能,混剪视频制作正在进入自动化时代,为创作者带来巨大便利。高效自动化处理:AI可以自动完成琐碎的剪辑工作,让创作者省下大量时间专注于项目策划和创意。批量素材产出:特别适用于抖音、小红书和视频号等平台上的养生、科普、心理、疗愈等垂直领域,可以自动化批量生产图片和视频素材。引流获客:通过优质内容吸引目标受众知识变现:通过教学传授技术工具变现:将搭建好的工作流作为产品销售。

汤师爷的博客 865

【Python爬虫系列】_005.浏览器开发者工具(详解)

Elements(元素)分析当前页面节点,用来辅助书写BS或者XPath这里面的数据与源代码有区别,不一定准确(避坑)Console(控制台)这个除了查看错误信息、打印调试信息(console.log())、写一些测试脚本以外,还可以当作Javascript API查看用例如我想查看console都有哪些方法和属性,我可以直接在Console中输入"console"并执行后续学js逆向的时候需要用到Sources(源代码)与在网页页面,鼠标右键——查看网页源代码 内容一致。

weixin_50296259的博客 422

JS获取文本在HTML中的真实长度

用于检测HTML中input元素是否有文本truncation的API。

ybdesire的专栏 2万+

符合DO-178C和DO-331的机载软件研制体系

DO-178C的核心要求软件开发生命周期:DO-178C定义了软件开发的生命周期过程,包括需求获取、设计、实现、验证和确认等。它为机载软件开发提供了一套系统化的指导,确保在开发过程中考虑安全性和可靠性。安全等级(DAL):根据系统的重要性,DO-178C将软件划分为不同的开发保障等级(DAL A到E),DAL A的要求最为严格,适用于关键安全功能,而DAL E的要求较低,适用于非关键功能。DO-178C在非基于模型软件开发中的应用。

qq_41854911的博客 980

html按钮文字设置大小,前端JavaScript-点击大中小按钮设置文章字体大小

在页面的某一个位置会有三个按钮,点击以后可以设置字体的大小,下面就通过简单的代码实例介绍一下如何实现此效果。代码实例如下: 前端JavaScript-点击大中小按钮设置文章字体大小function SetFont(size){var divBody=document.getElementById(“news_content”);if(!divBody){return;}divBody.style....

weixin_32026659的博客 3887

基于百度地图API在AI Studio上的卫星地图块图像处理与分类

本项目基于百度地图API获取了不同的瓦片地图并进行合并等处理,可用于遥感和抽象地图的地图块的图像分类、分割、检测等数据的制作。瓦片地图金字塔模型是一种多分辨率层次模型,从瓦片金字塔的底层到顶层,分辨率越来越低,但表示的地理范围不变。首先确定地图服务平台所要提供的缩放级别的数量N,把缩放级别最高、地图比例尺最大的地图图片作为金字塔的底层,即第0层,并对其进行分块,从地图图片的左上角开始,从左至右、从上到下进行切割,分割成相同大小(比如256x256像素)的正方形地图瓦片,形成第0层瓦片矩阵;

斌擎科技 746

三维重建(十八)——colmap的使用(粗浅)

三维重建(十八)——colmap的使用(粗浅)

河海大学研究生在读的学习笔记 1376

【html字体放大布局不会受影响变形】

html放大字体,页面布局仍不受影响

weixin_43250628的博客 876

configure: error: no acceptable C compiler found in $PATH解决方案

本文主要介绍了configure: error: no acceptable C compiler found in $PATH解决方案,希望能对使用Linux的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 4万+

js改变html内容位置,js更改本地html字体大小页面位置不发生改变

做html页面小说阅读器时,发现更改webview的字体后,原来的位置不见了,因此想从js入手,改变字体大小后也能回到原来位置具体做法:先初始化webview 以及websettings,我在外部做了几个按钮,用来改变字体大小,调用的代码如下; String js1 = " index = 0;\n"+ " nearIndex = null;\n"+ " var scroll...

weixin_42298209的博客 406

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

android页面位置不变化,js更改本地html字体大小页面位置不发生改变

做html页面小说阅读器时,发现更改webview的字体后,原来的位置不见了,因此想从js入手,改变字体大小后也能回到原来位置具体做法:先初始化webview 以及websettings,我在外部做了几个按钮,用来改变字体大小,调用的代码如下;String js1 = " index = 0;\n"+ " nearIndex = null;\n"+ " var scrollTop = docum...

weixin_29958123的博客 194

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

如何使用JavaScript在WordPress中更改onClick的字体大小

Have you ever come across a site or blog that lets their visitors change the font size from some +/- button in the sidebar? Normally, you should never have to add this feature because all major browse...

288

jdk-8u144-linux-x64.tar.gz.

该资源为搭建Linux系统Java环境用,资源的后缀为tar.gz格式的压缩包

JavaScript HTML DOM - 改变CSS

或者,我们可以根据用户的输入,动态地更改网页的样式。总的来说,JavaScript HTML DOM 提供了改变 HTML 元素样式的强大工具,可以极大地提高网页开发的效率。在实际工作中,JavaScript HTML DOM - 改变CSS在动态创建网页的情况下非常有用,可以根据用户输入或其他事件来更改网页的外观。JavaScript 是一种动态语言,它可以动态地修改网页的外观,并且使用HTML DOM(文档对象模型)可以更方便地控制HTML元素的样式。或者,如果我们想让元素变得可见,我们可以设置。

笔记 2801

ueditor百度编辑器。改变富文本框的可选字体大小。

http://ueditor.baidu.com/website/umeditor.html 监听全屏事件。 &lt;textarea name="viedoDesc" id="noticeText" datatype="*1-10000" style="position: relative;z-index:50;"&gt;&lt;/textarea&gt; &lt;span cl

肖肖肖丽珠的博客 1954

DOM改变元素节点的css样式HTML属性

通过以上五个示例和实际开发经验的分享,相信读者已经对如何通过DOM操作改变元素节点的CSS样式和HTML属性有了深刻的理解。希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。此外,结合现代框架(如React、Vue)时,可以通过状态管理和虚拟DOM技术进一步简化样式和属性的动态修改逻辑,提升开发效率。通过改变元素的CSS样式,可以动态调整页面的外观和布局,例如改变颜色、字体大小、位置等,从而实现用户交互效果或响应式设计。属性指定图片的路径。

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 928

javascript基础

属性 / 方法描述返回对拥有指定 id 的第一个对象的引用。返回带有指定名称的对象集合。返回带有指定标签名的对象集合。返回文档中所有指定类名的元素集合,作为 NodeList 对象。

Miss Z的博客 961

Vue3页面如何设置rem单位的依据“根font-size”的两种方式

最近在对项目做整体的自适应。我们可以通过设置meta的viewport属性设置屏幕的缩放,但有时候,屏幕缩放了但字体大小也需要做相应的调整才能达到更好的自适应效果。我们很容易想到使用媒体查询+rem来实现字体的自适应。rem单位:“rem” 是 “root em” 的缩写,表示相对于根元素(html元素)的字体大小。如果根元素的字体大小为16px,1rem就相当于16px。如果根元素字体大小更改,那么所有使用rem单位的元素的大小都会相应地调整。首先,简单说说使用'rem'单位的目的和必要性。

STATICHIT静砸的博客 4894

js实现给html固定区域增加水印

背景 给视频和文档的div区域增加水印。以下代码可以在任意位置增加水印。 js代码实现 var now = getNow(); watermark({"watermark_txt":"A B C X Y Z "+now}); function watermark(settings) { //此处可以更改自己想要初始化的id。 var ele = document.getElement...

经典鸡翅 724

前端基础html+css+js

web前端基础 web前端简介 web前端开发是从网页制作演变而来,名称上有很明显的时代特征。在互联网的演化进程中,网页制作是Web1.0时代的产物,早期网站主要内容都是静态,以图片和文字为主,用户使用网站的行为也以浏览为主。随着互联网技术的发展和HTML5、CSS3的应用,现代网页更加美观,交互效果显著,功能更加强大。 学习web前端开发基础技术需要掌握:HTML、CSS、JavaScript语言。 HTML是网页内容的载体。内容就是网页制作者放在页面上想要让用户浏览的信息,可以包含文字、图片、视频等。

zch的博客 1200

通过className更改元素样式 2020-11-20

element.className:类名样式操作 如果样式较多,可以采取操作类名的方式更改元素样式。 class因为是保留字,因此使用className来操作元素类名属性 className会直接更改元素的类型,会覆盖原先的类名 <style> div { width: 200px; height: 200px; background-color: pink; }

weixin_50286102的博客 752

034JS-this.className类名改样式

<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="X-UA-Compatible" content="ie=edge"> <title>Do

Gy_9543的博客 514

前端学习心得:HTML、CSS的实践感悟

这个时候就需要CSS和JS出马了,CSS主要是对HTML里面的内容进行一些调整,比如背景,字体大小之类的,还有HTML元素在页面中的位置,还有一些简单的动态效果,依靠过渡元素完成。首先就是自己对于一些基础的知识点记得并不牢固,有很多明明用过的属性,等到考核官提问的时候又说不出来,还有就是对HTML的理解不够深,只记得HTML是超文本标记语言,关于它的规则之类的并没有进行记忆,这也是我最后考核的分数不理想的原因。这一个月学习了前端的相关内容,HTML和CSS已经完成学习任务,JS也学了一些,还没有学完。

Xiao_Zhang_0216的博客 250
上一篇: 为什么要多读书?
下一篇: 基于JsBridge封装的高效自带加载进度条的WebView
_ArcticOcean
博客等级 码龄15年 68粉丝 106原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值