【问题标题】:Allow resizing of HTML frames while adding frameBorder=0 attribute?允许在添加 frameBorder=0 属性时调整 HTML 框架的大小?
【发布时间】:2011-10-28 22:17:08
【问题描述】:

在 cmets 开始尖叫“框架是邪恶的”之前,让我添加一个免责声明:“我只是在移植一个遗留应用程序,没有时间摆脱框架!” :-)

有一个包含两个框架的框架集。我不喜欢浏览器呈现的默认框架边框(尤其是在 Chrome 和 Firefox 上)。它太厚了,感觉很突兀!所以我想我会使用框架上的frameborder=0 属性隐藏默认框架边框,并在框架内的内容上添加所需的样式。问题是:添加frameborder=0 后,框架在 Chrome 和 Safari 上不再可以调整大小,而 IE 和 Firefox 仍然可以调整它们的大小。这是我的代码:

        <frameset rows="80%,20%" >
            <frame id="frame1" scrolling="auto" frameborder="0" />
            <frame id="frame2" scrolling="auto" frameborder="0" />
        </frameset>

有没有办法覆盖默认的框架边框渲染并仍然保留可调整大小?

【问题讨论】:

    标签: html css cross-browser frame frameset


    【解决方案1】:

    用普通的 css 为你的框架设置样式,我认为应该可以,但是框架是邪恶的,没有人使用它们 >.>

    尝试将此添加到您的框架集页面样式中:

    frame {
        border: 1px solid #464646;
        border-collapse: collapse;
    }
    

    【讨论】:

    • 对不起,但这也无济于事!我仍然无法摆脱 Chrome 和 Safari 中丑陋的边框。此外,我想,给框架添加样式是行不通的!
    【解决方案2】:

    我制作了一个脚本,在文档中放置了一个手柄栏,您可以使用它来调整 FF 和 chrome 框架集的大小。不完美,但可能会有所帮助:

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    <html>
    <head>
    <script type="text/javascript">
    
        function makeFramesetVerticallyResizable(frameSetId) {
            var frameSet = document.getElementById(frameSetId);
    
            // insert a vertical box called resizeHandle into the righthand document:
            var frameDoc = frameSet.children[1].contentDocument;
            var resizeHandle = frameDoc.createElement("div");
            resizeHandle.style.backgroundColor = "#999999";// remove this line to hide the handle
            resizeHandle.style.position = "fixed";
            resizeHandle.style.width = "100%";
            resizeHandle.style.height = "6px";
            resizeHandle.style.top = "3px"; // put it a little away from the border so firefox can detect dragging to the left
            resizeHandle.style.left = "0px";
            resizeHandle.style.cursor = "n-resize";
            resizeHandle.style.zIndex = 99999;        
            frameDoc.body.insertBefore(resizeHandle, frameDoc.body.firstChild);
    
            // Drag functions:
            var dragStartScreenY = null;
            resizeHandle.draggable = true;
            resizeHandle.ondragstart = function(event) {
                 dragStartScreenY = event.screenY;            
                 event.dataTransfer.setData('text/plain', 'dummy');
                 event.dataTransfer.effectAllowed = 'move';             
            };
            resizeHandle.ondrag = function(event) {
                if(dragStartScreenY !== null && event.screenY != 0) { // we have a mouse position ?
                    var offset = event.screenY - dragStartScreenY;
                    var height = frameSet.firstElementChild.offsetHeight;
                    var newHeight = height + offset;
                    frameSet.rows = "" + newHeight + ",*";
                    dragStartScreenY = event.screenY;
                }            
            }        
            resizeHandle.ondragend = resizeHandle.ondrag;// Firefox does not give us the current mouse position during dragging, so resize the frames at the end        
        }
    
    
    
    </script>
    </head>
        <frameset id="mainFrameSet" rows="80%,20%" border="0" onload="makeFramesetVerticallyResizable('mainFrameSet')">
            <frame src="frame_blanc.php" id="frame1" scrolling="auto" frameborder="0" />
            <frame src="frame_blanc.php" id="frame2" scrolling="auto" frameborder="0" />
        </frameset>  
    </html>
    

    【讨论】:

      猜你喜欢
      • 2015-08-06
      • 1970-01-01
      • 2014-03-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多