zoukankan      html  css  js  c++  java
  • 【转】使IFRAME在iOS设备上支持滚动

    原文链接: Scroll IFRAMEs on iOS
    原文日期: 2014年07月02日 
    翻译日期: 2014年07月10日
    翻译人员: 铁锚

    很长时间以来, iOS设备上Safari中超出边界的元素将不能滚动,处理这种问题对开发人员来说一直是种折磨。 对原文作者的博客来说,这特别让人无奈,因为demo程序都是在沙箱IFRAMEs中运行的,这是为了不影响博客网站的AJAX页面加载策略.  通过一些研究发现,只要设置两个CSS属性,以及加上一个元素,这个问题就解决了. Here we go!
    (译者注: 当初自己调这个问题是通过JS来监听处理的,导致的问题是响应不太灵敏,而且需要处理各种浏览器兼容问题.)

    点击查看示例程序(你可以用iPhone打开试试, 地址是: http://davidwalsh.name/demo/scroll-iframes-ios.php )

    支持滚动的 iframe 页面效果

    HTML代码
    在使用IFRAME或者其他HTML元素时,你需要使用一个元素(如DIV)来包装他们:

    1. <div class="scroll-wrapper">  
    2.     <iframe src=""></iframe>  
    3. </div>  

    这个DIV将作为支持内部滚动的基础容器。

    CSS 代码
    要让IFRAME支持滚动,需要一个常用的CSS属性和一个很少人知道的CSS属性(property):

    1. .scroll-wrapper {  
    2.     -webkit-overflow-scrolling: touch;  
    3.     overflow-y: scroll;  
    4.     /* 提示: 请在此处加上需要设置的大小(dimensions)或位置(positioning)信息! */  
    5. }  
    6. .scroll-wrapper iframe {  
    7.     /* 你自己指定的样式 */  
    8. }  

    -webkit-overflow-scrolling: touch; 属性值就是专为浏览器中溢出(overflow)时需要滚动的元素设计的。 如果没有指定这个属性,当你想滚动iframe时,实际上会导致外层页面的滚动,通过它你就可以对IFRAME的滚动进行控制! 在原作者的博客站点中,使用了下面的CSS:

    1. .demo-iframe-holder {  
    2.   position: fixed;   
    3.   right: 0;   
    4.   bottom: 0;   
    5.   left: 0;  
    6.   top: 0;  
    7.   -webkit-overflow-scrolling: touch;  
    8.   overflow-y: scroll;  
    9. }  
    10.   
    11. .demo-iframe-holder iframe {  
    12.   height: 100%;  
    13.    100%;  
    14. }  

    请收藏本文,以备查询或使用.记得有这个CSS属性是设置在包装元素上,而不是设置到滚动元素自身上面的!


    学如逆水行舟,不进则退。
  • 相关阅读:
    Highcharts 柱图 每个柱子外围的白色边框
    进阶ES6 点滴认知
    layer 问题 汇总
    iframe 常见问题 解析
    【腾讯开源】前端预处理器语言图形编译工具 Koala使用指南
    ruby环境sass编译中文出现Syntax error: Invalid GBK character错误解决方法
    Sass 混合宏、继承、占位符 详解
    git 命令篇
    git 继续前进篇
    zh-cn en-uk、zh-tw表示语言(文化)代码与国家地区对照表(最全的各国地区对照表)
  • 原文地址:https://www.cnblogs.com/dhsx/p/4801036.html
Copyright © 2011-2022 走看看