`

用JS有效解决移动w用JS有效解决移动web浏览器中HTML元素的overflow:sceb浏览器中HTML元素的overflow:scroll滚动属性失效问题

阅读更多

web移动平台前端UI开发工作,兼容问题超多,今儿又遇到一个。产品方要求在某固定尺寸容器内显示内容,但内容条数未知;如果条数过多,容器显示滚动条。这鸟需求按说是So easy,容器设死宽、高,CSS加属性overflow:scroll;完事!可拿设备去测的时候有趣了,Pc all browser正常,ios正常 ,android失效。泥马在android下效果与 overflow:hidden;一样,溢出部分隐藏了!
水平有限,用尽吃奶力各种解决未果,Google搜索有人说是android系统BUG,最后查到比较靠谱的解决是国外某高手开发了个JS库,名曰iScroll 4 。 亲测,好用,唯独效率不敢恭维(拿别人的东西用,少TM废话)。
下载地址:http://cubiq.org/iscroll-4
使用方法:
1. 引入 iscroll.js 
<script type="application/javascript" src="http://istyles.blog.163.com/blog/js/iscroll.js"></script>
<script type="text/javascript">
var myScroll;
function loaded() {
    myScroll = new iScroll('wrapper');
}
document.addEventListener('DOMContentLoaded', loaded, false);
window.onload = function() { 
    setTimeout(function(){ new iScroll(document.getElementById('scroller')) }, 100) 
};
</script>
2. 添加必要的样式
<style type="text/css">
#wrapper {
position:relative;
z-index:1;
height:200px;        /* Desired element height */
}
</style>

3. 容器加 id="wrapper" , 内容加 id="scroller" 
<div id="wrapper">
               <ul id="scroller">
                    <li></li>
                     ...
                    <li></li>
                </ul>
</div>

4. 有图有真相


Android 设备浏览页面 div(容器,非页面)overflow:scroll; 失效解决 - Cat - istyles

 

 

iScroll框架解析(翻译)

概要

iScroll 4 这个版本完全重写了iScroll这个框架的原始代码。这个项目的产生完全是因为移动版webkit浏览器(诸如iPhone,iPad,Android这些系统上广泛使用)提供了一种本地化的方式来对一个限定了高度和宽度的元素的内容进行滑动。很不幸的是,这种情况下所有的web应用的页面就不能够包含具有position:absolute的头、页尾或者是一个内容可滚动的中间区域。

然而,Android系统最新修订版已经可以支持这种功能了(尽管支持的力度还不是特别好),Apple公司似乎不太情愿将one-finger滑动事件运用到div元素上。

除了以前版本的iScroll的特性以外,iScroll 4还包括如下的特性:

     (1)缩放(Pinch/Zoom)

    (2)拉动刷新(Pull up/down to refresh)

    (3)速度和性能提升

    (4)精确捕捉元素

    (5)自定义滚动条

      友情提示:iScroll 4并不是iScroll 3的简易替代版本,API文档已经不一样了。同时考虑到此版本正处于测试期,一些API 可能会有细微的变化。

使用指南

在此文档中你会发现很多例子来教会你如何快速上手iScroll脚本库。参看文中的demo小例子并仔细阅读此文档,可能有点小无聊,但是这篇文章中却是iScroll这个脚本库的精髓之所在哦。

iScroll需要对所要进行滚动的元素进行初始化,并且不限定一个页面中使用iScroll的元素的个数(这里不考虑您的硬件配置)。滚动元素中内容的类型和长度在一定程度上将会影响iScroll脚本库里可以同时使用的元素的个数。使用iScroll这个脚本库时,DOM树的结构要足够简单,移除不必要的标签,尽量避免过多的标签嵌套使用。最优的使用iScroll的结构如下所示:

<div id="wrapper">

        <ul>

               <li></li>

               .....

        </ul>

</div>

在这个小例子中,ul标签将会被滚动。iScroll一定要与滚动内容外面的wrapper进行联系才会产生效果。

【注意事项】:

只有wrapper里的第一个子元素才可以滚动,如果你想要更多的元素可以滚动,那么你可以试试下面的这种写法:

<div id="wrapper">

        <div id="scroller">

               <ul>

                    <li></li>

                     ...

                </ul>

                <ul>

                         <li></li>

                          ...

                </ul>

       </div>

</div>

在这个例子中,scroller这个元素可以滚动,即便它包含两个ul元素

iScroll必须在调用之前实例化,你可以在下面几种情况下对iScroll进行实例化:

    (1)onDOMContentLoaded

    (2)onLoad

    (3)以内联inline方式

下面我们逐个来讲讲这三种用法的优缺点

ONDOMContentLoaded

        适用于滚动内容只包含文字、图片,并且所有的图片都有固定的尺寸

        使用方法:(在head标签中添加如下代码)

        <script src="iscroll.js"></script>

        <script>

                 var myscroll;

                function loaded(){

                           myscroll=new iScroll("wrapper");

                 }

               window.addEventListener("DOMContentLoaded",loaded,false);

         </script>

         注意:myscroll这个变量是全局的,因此你可以在任何地方调用它的函数

onLoad

        有些时候在DOMContentLoaded的状态下就初始化iScroll其实是有点草率的,因此此时页面的资源可能还没有全部加载完毕。如果你遇到了一些很怪异的行为可以试试下面的写法:

        <script src="iscroll.js"><script>

        <script>

                    var myscroll;

                    function loaded(){

                   setTimeout(function(){

                            myscroll=new iScroll("wrapper");

                     },100 );

                }

                window.addEventListener("load",loaded,false);

         </script>

         这种情况下iScroll会在页面资源(包括图片)加载完毕100ms之后得到初始化,这应该是一种比较安全的调用iScroll的方式。

inline初始化
         这种情况会在页面加载到js的时候就进行调用,此方法不推荐使用,但是很多javascript的大牛都在用这种方式,我又有什么理由不赞成呢?

         <script src="iscroll.js"></script>

                    <div id="wrapper">

                            <ul>

                                <li></li>

                                 ...

                          </ul>

                  </div>

        <script>

                   var myscroll=new iScroll("wrapper");

        </script>

        不过建议你使用一些框架的ready方法来安全调用iScroll(比如jquery里的ready())。

iScroll里传递的参数

        iScroll里的第二个参数允许你自定义一些内容,比如下面的这段代码:

       <script>

                 var myscroll=new iScroll("wrapper",{hScrollbar:false, vScrollbar:false});

       </script>

       第二个参数通常都是一个对象,像上面的这个例子里就设定了不显示滚动条。常用的参数如下:

               hScroll               false 禁止横向滚动 true横向滚动 默认为true

               vScroll               false 精致垂直滚动 true垂直滚动 默认为true

               hScrollbar         false隐藏水平方向上的滚动条

               vScrollbar         false 隐藏垂直方向上的滚动条

               fixedScrollbar  在iOS系统上,当元素拖动超出了scroller的边界时,滚动条会收缩,设置为

                                        true可以禁止滚动条超出scroller的可见区域。默认在Android上为true, 

                                        iOS上为false

               fadeScrollbar  false 指定在无渐隐效果时隐藏滚动条

               hideScrollbar  在没有用户交互时隐藏滚动条 默认为true

               bounce            启用或禁用边界的反弹,默认为true

               momentum     启用或禁用惯性,默认为true,此参数在你想要保存资源的时候非常有用

               lockDirection  false取消拖动方向的锁定, true拖动只能在一个方向上

                                     (up/down 或者left/right)为了保持资源的完整性,建议去除滚动条

拉动刷新(pull to refresh)

        自从Twitter和一些Apple的本地化应用出现了这个效果之后,这个效果就变得非常流行。你可以看看这儿先一睹为快。我最近把"pull to refresh"这个部分单分出来作为iScroll的一个额外插件。你可以点击这儿看看pull to refresh是如何工作  滴。你只需要做的就是自定义pullDownAction()这个方法。你可能需要一个ajax来加载新的内容,不过一旦DOM树发生了变化要记得调用refresh这个方法来。需要记住的是在例子中我们加了1秒的延迟来模拟网络的延迟效果。当然,如果你不想使用这个延迟,那就把setTimeout方法去掉就行了。

缩放(pinch / zoom)

        我们不得不面对一个事实,那就是光有滚动其实没什么新意的。这就是为什么在iScroll 4这个版本里我们允许你可以放大和缩小。想要这个功能,只需要设置放大的参数zoom 为true即可实现利用手势来放大和缩小。你可以看看这儿。双击放大和缩小的功能在iScroll 4里也是得到支持的。要使用缩放功能,你至少需要如下配置:

                var myScroll =new iScroll("wrapper",{zoom:true});

       如果你想对缩放功能进行深度的自定义的话可以使用下面的一些选项:

               zoomMax   指定允许放大的最大倍数,默认为4

      【注意事项】:如果想要图片缩放的效果很好的话要把他们放到硬件的合成层中。通俗点说,就是在所有需要缩放的img元素上使用-webkit-transform:translate3d(0,0,0)来实现,而且尤为重要的是,硬件的加速会占用大量资源,要谨慎使用,否则你的应用可能就此崩溃。

捕捉元素(snap and snap to element)

        捕捉的功能会促使scroller去重新定义位置,这样可以制作更加花哨的传送带效果。点击这里有个小例子。默认情况下,iScroll将scroller分成四分体,或者是相同大小的wrapper。iScroll 4加入了这个属性允许捕捉scroller里的 任何元素,不考虑外部wrapper的大小。如果你想要实现这样的传送带效果,我建议你使用“quadrant”分割。最佳的设置如下:

                 var myscroll=new iScroll("wrapper",{

                       snap:true,

                       momentum:false,

                       hScrollbar:false,

                       vScrollbar: false

                  });

          捕获元素,可以通过传递一个字符串来作为查询条件,如下:

                var myscroll=new iScroll("wrapper",{

                      snap:"li",

                      momentum:false,

                      hScrollbar:false,

                      vScrollbar:false

                });

           在这个例子中scroller可以捕捉到滚动区域中最左上角的li元素

自定义滚动条(custom scrollbars)

          在iScroll 4这个版本中,可以利用一系列的css来自定义滚动条的呈现。可以给滚动条添加一个class参数,如下:

                  var myscroll=new iScroll("wrapper",{

                     scrollbarClass: "myScrollbar"

                 });

          你可以点击这里看一个小例子,在这个小例子里,myScrollbarH这个类被添加到了水平滚动条上,myScrollbarV这个类则被添加给了垂直方向上的滚动条上了。需要提醒的是,滚动条是由两个元素组合而成的:容器和显示器。容器同wrapper的高度相同,而显示器则代表的是滚动条本身。

           滚动条的HTML结构如下:

                  <div class="myScrollbarV">

                          <div></div>

                  </div>

                 .myscrollbarV{

                           position:absolute;z-index:100;width:8px;bottom:7px;top:2px;right:1px;

                  }

                .myScrollbarV > div {
                           position:absolute;
                           z-index:100;
                           width:100%;
                             /* The following is probably what you want to customize */
                           background:-webkit-gradient(linear, 0 0, 100% 0, from(#f00), to(#900));
                           border:1px solid #800;
                          -webkit-background-clip:padding-box;
                          -webkit-box-sizing:border-box;
                          -webkit-border-radius:4px;
                          -webkit-box-shadow:inset 1px 1px 0 rgba(255,255,255,0.5);
                 }

通用方法:

     (1)refresh                          在DOM树发生变化时,应该调用此方法

     (2)scrollTo()                     滚动到某个位置

               eg: myscroll.scrollTo(0,10,200,true);

     (3)scrollToElement()      滚动到某个元素

               eg: myscroll.scrollToElement("li:nth-child(10)",100);

     (4)detroy()                       完全消除myscroll及其占用的内存空间

                eg: myscroll.destroy()

【添加】

iScroll框架在部分三星手机上无法滑动或点击的解决方案

一、测试平台

    三星 i9023   android 4.1.2   (正常)

    三星 i9250   android 4.2.2   (存在问题)

    三星 i9300   android4.1.1    (存在问题)

    三星 i9308   android 4.0.4   (存在问题)

 

二、问题描述

    上述手机出现无法滑动或者无法触发点击事件的情况

 

三、问题分析

    1onBeforeScrollStart方法

       onBeforeScrollStart: function (e) { e.preventDefault(); }

       此方法是在_start里进行了调用,目的是为了阻止浏览器默认动作的执行,防止在

          滑动的过程中进行干扰,同时也就阻止了滑动区域里元素的事件的触发,这种处

          理方式也直接导致了必须要在_end方法中再次触发元素的点击事件

    2、_end方法

       if (target.tagName != 'SELECT' && target.tagName != 'INPUT' 

             && target.tagName != 'TEXTAREA') {

           ev = document.createEvent('MouseEvents');

           ev.initMouseEvent('click', true, true, 

                             e.view, 1,point.screenX, 

                             point.screenY, point.clientX,

                             point.clientY,e.ctrlKey, 

                             e.altKey, e.shiftKey,

                             e.metaKey,0, null);

            ev._fake = true;

            target.dispatchEvent(ev);

        }

        这个处理方式就是顺承了上面所提到的阻止了浏览器默认行为后,对滑动区域

            除SELECTINPUTTEXTAREA的元素触发click事件,已完成对click绑定事件的调用

    【具体分析】

         由于onBeforeScrollStart是在_start方法中进行的调用,e.preventDefault();阻止了元

         素的默认行为,从而导致了元素绑定事件的失效,必须在_end操作结束后进行

             绑定事件的模拟调用,原始的iScroll源代码中在_end中最后创建了click事件的

             模拟,但是这里必须要清楚的一个原理就是,click其实是要依赖于其他事件的:

         1)   普通pc网页中,click需要依赖于mousedownmouseup相继触发

         2)   移动webkit中,click则需要依赖于touchstarttouchend

            (实际mousedown,mouseup在移动webkit上也存在)相继触发

  “相继触发”的意思就是中间不会夹杂有其他的事件类型,这也就很容易理解

     iScroll_end中对模拟事件调用的条件了,必须要判断that.moved才能直接触

    发模拟事件。iScroll中与_start_move_end相关的三个事件类型是按照如

   下的规则来设置的:

        START_EV = hasTouch ? 'touchstart' : 'mousedown'

        MOVE_EV = hasTouch ? 'touchmove' : 'mousemove'

        END_EV = hasTouch ? 'touchend' : 'mouseup'   

    【注意事项】

          经测试,三星部分手机里默认浏览器里会默认所有元素都有一个默认的click

          事件测试结果显示鼠标事件中默认事件包含mouseup,mousedown,click,

                    dblclick在移动webkit上不支持,为系统放大功能),e.preventDefault时会阻止

          掉默认click事件的执行,必须要人为的在_end结束之后模拟click事件的调用,

               而其他正常手机即使调用了e.preventDefault也不会阻止click事件的触发,因为

               这些手机的默认浏览器上的元素的click事件的cancelable属性不为true,不可

               以被preventDefault取消掉,会正常执行,而如果在_end中模拟了click事件则

               将会导致click的重复调用(在toggle状态的事件上非常明显),因此折中

               的方式参见下面的解决方案。

 

四、解决方案

       1. 去除onBeforeScrollStart里的阻止默认行为

      onBeforeScrollStart: function (e) { //e.preventDefault(); }

       2. onBeforeScrollMove设置为

           function (e) {e.preventDefault();}

         以保证手机上的正常滑动免受浏览器默认行为影响(如下滑时会有窗口的scroll事件),

         当然如果这里不添加的话也可以在documentEND_EV中阻止浏览器默认行为

      3.  _end 中将模拟事件名更改为END_EV或者直接去掉模拟事件的功能 

 

iscroll.js是Matteo Spinelli开发的一个js文件,使用原生js编写,不依赖与任何js框架。旨在解决移动webkit系浏览器的区域滚动问题,兼容mobile safari、android默认浏览器、safari、chrome、firefox5+、opera11+、IE9+及其他webkit核心浏览器。最新版本为iscroll4。 


iscroll的用武之地 

1.区域滚动 

我们在pc端web开发中,有时会用固定某一区域的宽度和高度,然后使用overflow:auto,使其内容在该区域内滚动。 

iphone默认浏览器(mobile safari)也支持固定区域的滚动,但必须双指滑动操作,而且没有滚动条。mobile safari中的单指滑动只针对页面级别,不针对页面元素。这样的操作体验很麻烦,而且很多用户根本不知道双指能够区域滑动。 

android自带浏览器也支持区域滚动,且可以单指滑动操作,但是滑动起来卡的半死半活,很不流畅。 

使用iscroll,可以完美解决上述问题了,不仅可以在iphone和android上单指滑动,而且滑动起来流畅之极,酣畅淋漓。滑动过程中也有漂亮的滚动条提示,让你舒心不已。 

2.固定定位 

固定定位不是iscroll的原生用法,而是使用iscroll协助解决固定定位问题。 

话说iphone很先进,但就是不支持position:fixed。这下苦了我们了,固定定位怎么解决啊,我们会经常遇到固定标题栏、固定工具栏等情况啊!! 

使用iscroll协助解决:首先获取浏览器窗口高度;然后获取固定工具栏的高度;接着将除固定工具栏之外的内容全部放在一个固定区域内,该固定区域的高度=窗口高度-工具栏高度;之后对固定区域使用iscroll。这样,整个html页面的高度正好等于窗口高度,页面级别不会出现滚动,工具栏就一直固定在当前的位置。在固定区域内滑动,可以查看页面其他内容,不会影响工具栏的定位。 


鼠标滚轮滚动 

iscroll支持在pc端浏览器中使用鼠标滚轮控制区域滚动,但操作起来很不灵敏。这是由于iscroll对鼠标滚轮事件做了拦截,然后缩小了滚轮的滚动距离,详见iscroll4.js源代码608-609行: 

wheelDeltaX = e.wheelDeltaX / 12;//控制X轴鼠标滚轮速度 
wheelDeltaY = e.wheelDeltaY / 12;//控制Y轴鼠标滚轮速度 
    iscroll将每次的滚轮距离缩小为系统默认距离的12分之一,难怪滚起来很慢,感觉不灵敏。只需要将12改成1,滚轮的滚动速度就恢复正常了。你也可以根据实际需要设置成其他值。 
输入框聚焦不灵敏、无法选择文字 

    使用了iscroll之后,你会发现点击输入框时不灵敏,经常无法聚焦;页面文字也无法选择和复制。这是由于iscroll要监听鼠标事件和触摸事件来进行滚动,所以禁止了浏览器的默认行为,详见源代码92行: 
onBeforeScrollStart: function (e) { e.preventDefault(); }, 
iscroll不分青红皂白,禁止了浏览器的一切默认行为,导致上述问题。所以我们需要稍作修改: 
onBeforeScrollStart: function (e) { 
var target = e.target; 
while (target.nodeType != 1) target = target.parentNode; 
if (target.tagName != ‘SELECT’ && target.tagName != ‘INPUT’ && target.tagName != ‘TEXTAREA’) 
e.preventDefault(); 
}, 
    判断触发事件的元素是不是input、select、textarea等表单输入类元素,如果不是就阻止默认行为。这样保证了输入类元素能正确快速聚焦。 
在上述修改中追加一个条件 target.tagName != ‘body’或者直接将onBeforeScrollStart修改为null,即可做到鼠标选取文字,但这样的修改会导致iscroll滚动失效或不灵敏,所以无法选取文字这个问题先放一边吧。如你有更好的方法,欢迎回复。 
select元素操作不灵敏或操作后白屏 

    使用iscroll后,还有一个较麻烦的问题,就是select元素点击不灵敏(滚动之后点击select,经常无响应);有时点击有反应了,下拉菜单显示却错位(pc端);选择一项之后,页面直接变成了空白(iphone、android中)或者页面位置向上偏离,滚动区域位置出现偏离。 
    说白了,就是导致select没法用。为此我调试了很久,最后发现了问题所在:iscroll默认使用的是css的transform变形中的translate3d实现区域滚动,每次滚动实际是改变translate3d中的y轴值,实际的dom位置并没有发生变化。translate3d会导致页面的焦点错误,系统级下拉菜单的显示则会导致其出现显示偏离。 
    控制滚动模式的代码在67行:useTransform: true。好在iscroll提供了另一种滚动方式,基于绝对定位位置变化的滚动。修改为useTransform: false之后,iscroll就会使用对定位位方式来实现滚动,该方式是我们在web开发中模拟动画的最常用方式,滚动之后dom的实际位置也同步发生了变化,不会出现错位偏离现象。 
    在pc端主流浏览器、iphone、android2.2下测试,select问题完美解决。 
    不过需要注意,使用对position决定定位后,滚动区的宽度默认会自适应内容宽度,而不是父元素的100%,所以最好将滚动区域宽度设为100%。 
美中不足 

    iscroll是小而精的经典作品,名字也带着apple范。但唯一美中不足的是,只能使用id调用。 

 

 

 

    最近做移动平台的应用,使用iscroll使屏幕上下滑动。发现当使用iscroll后,input等不能输入内容了。只要在iscroll.js文件中加入如下代码就ok了。、

function allowFormsInIscroll(){
 [].slice.call(document.querySelectorAll('input, select, button')).forEach(function(el){
 el.addEventListener(('ontouchstart' in window)?'touchstart':'mousedown', function(e){
 e.stopPropagation();
 
 })
 })
 }
 document.addEventListener('DOMContentLoaded', allowFormsInIscroll, false);
原文地址:http://www.qinsiwang.com/theme_bbs_6/136.html
分享到:
评论

相关推荐

    RTD1073硬件接口图

    这些版本变更记录了设计过程中的改进和优化,例如增加了电阻以拉高SCEA#、SCEB#的电平,移除了SW2并增加了JP5、RN1、J9、J10等组件,修改了复位电路等。这些变化体现了设计者对产品的持续改进和完善。 ### 总结 ...

    Bet2.5e西门子S7-200模拟器:全面支持PPI与Modbus通讯,无PLC亦可测试,导入用户程序,无限制通讯模式

    内容概要:本文介绍了西门子S7-200模拟器bet2.5e版本的功能特点及其应用价值。该模拟器支持多种通讯协议如PPI和Modbus RTU,允许用户在没有真实PLC设备的情况下进行程序测试。它不仅能够模拟主站和从站的通讯,还可以便捷地导入用户程序并提供无限期使用的优势。尽管缺少网络通讯功能,但对于基础学习和简单项目的测试依然非常实用。 适合人群:工控领域的初学者、工程师和技术爱好者,尤其是那些希望在没有真实PLC设备的情况下进行编程和通讯测试的人。 使用场景及目标:适用于需要测试PLC程序和通讯协议的场景,帮助用户熟悉PLC编程和通讯机制,提高开发效率,减少硬件依赖。主要目标是在无硬件条件下完成程序调试和通讯测试。 其他说明:文中详细展示了如何使用VB.NET、Python和梯形图语言进行具体的编程实例,强调了注意事项如地址映射、波特率设置等。此外,还提到了一些替代方法来弥补网络通讯功能的不足,如使用虚拟串口工具。

    Cplex抽水蓄能容量优化配置程序:物超所值,清晰注释,可自由修改学习

    内容概要:本文介绍了一款用于抽水蓄能容量优化配置的CPLEX程序,旨在帮助用户通过数学规划方法实现抽水蓄能电站的最佳容量配置。程序不仅提供详细的代码示例,还包括视频讲解,使编程小白也能轻松理解。文中详细解释了容量优化的目标、配置参数的选择以及储能出力的重要性,并展示了如何通过CPLEX库构建线性规划模型,设定目标函数、添加约束条件并求解模型。此外,文章还讨论了实际应用场景中的注意事项,如充放电效率、水库容量变化、负荷跟踪约束等,并提供了修改参数进行场景分析的方法。 适合人群:对抽水蓄能容量优化感兴趣的电力系统工程师、研究人员及编程爱好者。 使用场景及目标:适用于需要进行抽水蓄能容量优化的工程项目,目标是通过合理的容量配置降低运营成本,提高系统稳定性。用户可以通过修改配置文件中的参数,如抽水效率、电价等,来进行不同的场景分析。 其他说明:程序包内含实战讲解视频,有助于更好地理解和应用代码。代码中包含了多种实用技巧,如处理浮点数精度、时间序列数据等,这些都是实际项目中积累的经验。

    Rust编译器诊断分级:Warning分类.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    3泵恒压供水PLC控制触摸屏系统设计:综合原理图、梯形图编程与组态展示

    内容概要:本文详细介绍了三泵恒压供水控制系统的硬件配置、PLC程序设计、触摸屏组态以及调试技巧。首先讨论了硬件配置的选择,包括变频器、压力传感器的安装位置及其重要性。接着深入探讨了PLC程序的核心逻辑,特别是PID压力调节和泵组轮换策略,确保系统能够高效节能地运行并延长设备寿命。此外,文章还强调了触摸屏组态的关键要素,如压力趋势图和手动干预界面的设计。最后,作者分享了一些调试经验和常见故障排除方法,如模拟量处理、滤波算法的应用以及紧急情况下的手动模式保障。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和恒压供水系统感兴趣的读者。 使用场景及目标:适用于需要设计和实施恒压供水控制系统的工程项目,帮助工程师掌握从硬件选型到软件编程再到系统调试的完整流程,最终实现稳定的供水控制。 其他说明:文中提供了详细的IO分配表、梯形图逻辑示例和触摸屏界面设计建议,有助于读者更好地理解和应用相关技术。同时,作者还分享了许多实践经验,为实际操作提供了宝贵的指导。

    西门子S7-200 PLC与组态王联动3泵恒压供水系统全面解析:梯形图程序、接线图及组态设计

    内容概要:本文详细介绍了利用西门子S7-200 PLC和组态王搭建三泵恒压供水系统的全过程。首先阐述了硬件配置,包括IO分配、接线方式以及变频器的使用方法。接着深入探讨了PLC程序的核心逻辑,特别是压力闭环控制和泵轮换策略的设计。文中还分享了组态王界面设计的经验,强调了动态压力曲线和手自动切换功能的重要性。最后,作者结合实际案例,指出了调试过程中常见的问题及其解决方案。 适合人群:从事工业自动化领域的工程师和技术人员,尤其是对PLC编程和HMI设计有一定基础的人群。 使用场景及目标:适用于需要构建高效稳定的恒压供水系统的工程项目。主要目标是确保系统能够根据管网压力自动切换水泵,保持压力稳定,同时提高设备使用寿命和维护效率。 其他说明:文章不仅提供了详细的理论讲解,还包括了许多实用的操作技巧和经验分享,有助于读者更好地理解和掌握相关技术和应用场景。

    Rust跨语言回调队列:MPSC通道集成.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    批处理文件:批量删除当前文件夹下所有文件名里的幻灯片这三个字

    将ppt转换成图片时,所有图片的文件名中会出现“幻灯片”三个字,这时,可以将本批处理文件复制到对应文件夹内,双击运行后,可以批量删除图片文件名中的“幻灯片”三个字。

    Rust音频处理实战:CPAL库实现实时音频流处理.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    基于Matlab平台的共享电动汽车两阶段选址调度模型:高效运行在Matlab与cplex环境下的解决方案

    内容概要:本文详细介绍了如何利用Matlab和CPLEX构建共享电动汽车的两阶段优化模型。首先,通过整数规划确定最佳充电站位置,考虑用户需求覆盖率和建设成本之间的权衡。其次,采用动态调度模型处理实时车辆分配,确保各区域需求得到满足的同时优化运营成本。文中还讨论了数据预处理技巧如K-means聚类、移动平均滤波以及CPLEX求解器的高效配置方法。 适合人群:从事交通规划、物流配送等领域研究的专业人士,尤其是对数学建模和优化算法有一定了解的研究人员和技术开发者。 使用场景及目标:适用于城市交通管理部门、共享汽车运营商等机构进行电动车基础设施布局规划和日常运营管理。主要目的是降低建设和运营成本,提高用户体验和服务质量。 其他说明:作者分享了许多实践经验,包括如何避免常见错误(如矩阵转置问题)、提高求解速度的小技巧(如稀疏矩阵的应用)以及如何通过可视化工具辅助结果分析。此外,还提到了一些潜在改进方向,如加入充电桩排队时间和路网结构的影响因素。

    基于海马体记忆回放机理的机器人全局路径优化算法研究论文

    内容概要:本文旨在构建一种基于记忆序列回放机理的机器人全局路径优化算法模型。通过模拟大脑海马体和前额叶中的记忆回放过程,改进了传统的机器人导航算法。模型采用自适应的Top-k竞争规则和回报折扣思想,使得智能体能够在复杂障碍物环境中快速找到最短路径。实验结果显示,智能体经过1-3次探索即可收敛到稳定状态,并找到最短路径,验证了模型的有效性和快速收敛性。 适合人群:对机器人导航、智能算法、神经科学感兴趣的科研人员,尤其是从事机器人路径规划和认知计算模型研究的学者和工程师。 使用场景及目标:①适用于复杂环境下的机器人路径规划与导航任务;②用于研究大脑记忆回放机制及其对决策过程的影响;③提高机器人在未知环境中的自主学习和适应能力。 其他说明:该模型不仅在仿真环境中表现优异,还在真实机器人实验中得到了验证。通过ROS平台和MATLAB接口,实现了对智能小车的有效控制和路径优化。此外,模型的收敛性和鲁棒性优于现有的DN2和基于小脑及基底神经节的混合模型,显示出更强的适应性和更高的性能。

    基于迁移学习的端到端发音检错研究.pdf

    基于迁移学习的端到端发音检错研究.pdf

    Rust内存安全容器:ThinVec优化实践.pdf

    文档支持目录章节跳转同时还支持阅读器左侧大纲显示和章节快速定位,文档内容完整、条理清晰。文档内所有文字、图表、函数、目录等元素均显示正常,无任何异常情况,敬请您放心查阅与使用。文档仅供学习参考,请勿用作商业用途。 Rust 以内存安全、零成本抽象和并发高效的特性,重塑编程体验。无需垃圾回收,却能通过所有权与借用检查机制杜绝空指针、数据竞争等隐患。从底层系统开发到 Web 服务构建,从物联网设备到高性能区块链,它凭借出色的性能和可靠性,成为开发者的全能利器。拥抱 Rust,解锁高效、安全编程新境界!

    基于单片机酒精检测报警器:AD0809与AD0832版本的声光报警及LCD1602显示功能

    内容概要:本文详细介绍了基于51单片机的酒精检测报警器的设计与实现,涵盖了硬件选型、软件编程、功能实现等方面的内容。文中提供了两种不同版本的ADC芯片(AD0809和AD0832),分别阐述了它们的工作原理、代码实现及其优缺点。此外,文章还讨论了系统的各个组成部分,如MQ-3酒精传感器、LCD1602显示屏、按键设置、声光报警等,并给出了详细的代码示例和调试技巧。 适合人群:对单片机开发有一定基础的学习者、电子爱好者、从事交通安全管理的技术人员。 使用场景及目标:适用于防止酒驾的安全监控场景,旨在提高驾驶安全性和减少交通事故的发生。通过本项目的实践,读者可以掌握单片机的基本应用技能,了解传感器数据采集、处理和反馈机制。 其他说明:文中不仅提供了完整的代码实现,还分享了许多实际开发过程中可能遇到的问题及解决方案,如传感器预热、按键防抖、ADC读取时序等。同时,作者强调了该项目作为DIY作品,在正式应用中应注意合法合规性。

    基于VSG的光储并网控制策略及低压穿越控制策略

    内容概要:本文详细介绍了基于虚拟同步发电机(VSG)技术的光储并网系统控制策略,涵盖光伏MPPT控制、储能直流稳压、VSG控制、虚拟阻抗增加及低压穿越控制等方面。针对每个控制策略提供了具体的实现代码和应用场景分析,强调了这些策略在保障电力系统稳定性方面的重要作用。文中不仅讨论了理论背景,还给出了大量实用的代码片段和技术细节,有助于理解和实施这些先进的控制策略。 适合人群:从事新能源发电系统设计、开发和维护的专业技术人员,特别是对光储并网技术和VSG控制感兴趣的工程师。 使用场景及目标:适用于希望深入了解光储并网系统内部工作机制的研究人员和技术爱好者;旨在为解决实际工程项目中的技术难题提供指导和支持,确保光储并网系统能够在各种复杂的电网环境下稳定运行。 其他说明:文章中提到的技术和方法已在多个实际案例中得到验证,能够有效提升系统的性能和可靠性。此外,作者还分享了一些调试经验和常见错误规避技巧,对于初学者非常有价值。

    中兴ZXD2400电源电路图(电子版PDF格式,非PCB图,包含详细的线路图和图纸)

    内容概要:本文详细解析了中兴ZXD2400电源电路图4.1版本,涵盖输入、转换和输出三大部分。输入部分介绍了LC滤波电路的作用及其参数计算方法;转换部分围绕UC3842芯片的工作原理展开,展示了其通过比较反馈电压和参考电压来实现电压稳定转换的功能;输出部分讨论了线性稳压芯片的应用。此外,还深入探讨了PWM控制、MOSFET驱动、补偿网络、电压采样、保护电路等关键设计细节,并提供了多个Python代码片段用于参数计算和电路特性模拟。文章不仅帮助读者理解电源电路的工作机制,还分享了许多实际操作经验和注意事项。 适合人群:从事电源设计的技术人员、电子工程师、DIY爱好者。 使用场景及目标:适用于希望深入了解电源电路设计原理和技术细节的人群,旨在提高读者对电源系统的理解和实际应用能力。 其他说明:文中提供的Python代码片段有助于快速定位关键芯片位置、计算重要参数,便于理论联系实际。同时提醒读者关注版本变更说明,避免因使用旧版图纸而导致的问题。

    派克气动专业的系统组件.pdf

    派克气动专业的系统组件

    健身房管理系统源代码.zip

    健身房管理系统源代码.zip

    基于Matlab的悬架设计计算程序:涵盖偏频刚度挠度与配件匹配计算,纵横向力学校核与等效参数评估,适用于学习群体及初入行技术人员

    内容概要:本文介绍了基于Matlab平台开发的一款悬架设计计算程序,涵盖了悬架系统的多个方面,如基础参数计算、部件匹配计算、力学校核和独立悬架特性计算。程序不仅提供了详细的计算方法和实例代码,还强调了实际应用中的注意事项和技术细节。通过该程序,用户可以高效地进行悬架设计,确保计算结果符合工程要求并提高设计精度。 适用人群:主要适用于学习群体和初入行的技术人员。对于学生来说,它是生动的教科书案例,帮助他们更好地理解和掌握悬架设计的基本概念和计算方法;对于技术人员,则是工作中的得力助手,能够快速完成复杂的悬架设计计算任务。 使用场景及目标:该程序广泛应用于汽车工程领域的悬架设计过程中。它可以用于教学演示、工程项目中的参数匹配和性能评估等场合。通过使用该程序,用户可以在短时间内获得准确可靠的计算结果,从而加快设计进度,减少手工计算带来的误差。 其他说明:程序经过多次工程验证,具有较高的可靠性和实用性。附带详细使用说明书,便于初次使用者快速上手。此外,文中还分享了一些作者在实际项目中积累的经验教训,有助于避免常见错误,进一步提升设计质量和效率。

    typescript例子-所有代码打包

    TypeScript 是一种强大的静态类型编程语言,它是JavaScript的超集,为开发者提供了更丰富的语法、类型系统和工具链支持。这个“typescript例子-所有代码打包”压缩包包含了一个全面的TypeScript示例集合,名为“TypeScriptSamples-master”,旨在帮助初学者和有经验的开发者深入理解和实践TypeScript的各种特性。 在TypeScript中,静态类型系统是其核心特色之一。通过声明变量、函数参数和返回值的类型,编译器可以在编码阶段发现潜在的错误,而不是等到运行时才暴露出来。这极大地提高了代码的稳定性和可维护性。例如,在这个压缩包中,你可能会看到如何定义和使用各种类型的变量,如基本类型(number、string、boolean)、数组、对象、枚举以及联合类型等。 接口(Interface)是TypeScript的另一大亮点,它用于定义对象的形状,包括属性、方法等。在“TypeScriptSamples-master”中,你可能找到用接口来规范复杂数据结构的例子,例如定义一个用户对象或API响应模型。同时,接口可以用于类型合并,实现模块间的通信。 泛型是TypeScript中非常灵活的一个特性,它允许我们在编写代码时指定参数化类型,这样同一个函数或类就能处理多种类型的数据。通过查看压缩包中的代码,你可以学习到如何定义和使用泛型,以提高代码的复用性。 函数在TypeScript中也得到了强化,支持箭头函数、默认参数、rest参数和剩余参数。这些功能使得编写高阶函数和回调函数更加方便。在“TypeScriptSamples-master”中,你可能会遇到这些函数特性的实际应用案例。 另外,TypeScript还引入了类和模块的概念,支持面向对象编程。类让我们能够创建具有继承、封装和多态的复杂对象,而模块则允许我们组织代码,

Global site tag (gtag.js) - Google Analytics