- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在修复一个由我以外的人建立的网站。我需要修复移动 View 中的菜单滚动。到目前为止,我真正知道的是,如果你调整浏览器的大小,你就会突然能够滚动,但如果你使用的是手机,那么情况就不是这样了。该网站名为 clasado.com 如果您通过缩小浏览器视口(viewport)更改为移动 View ,然后打开菜单,您将看到在调整浏览器大小之前无法滚动。此菜单的 javascript 如下:
/**
* Navigation.js
*/
(function() {
var Console = window.Console || (function() {
return {
name: function() { return "Console" },
defaultConfig: function() { return this; },
config: function() { return this; },
to: function() { return this; },
in: function(m) { console.log(m); return this; },
out: function() { return this; },
log: function(m) { console.log(m); return this; },
reset: function() { return this; }
}
})();
var search = {
open: "[data-open]",
toggler: ">a>[data-toggle]",
group: "li > ul[data-collapsible]",
collapsible: "[data-collapsible]",
sidebarLeft: ".is-data .sidebar-left",
sidebar: ".sidebar"
}
/**
* The data-open attribute denotes that the menu block should open the sidebar
*/
$(search.open).on("click", function(evt) {
var sidebar = $(search.sidebar);
var toggler = UUID.generateFor(this);
var Log = toggler.data("log");
if(window.handyHint) {
handyHint.hide();
}
var isVertical = (function(sidebar, Log) {
return function() {
Log.in("checkIfSidebarIsVertical");
var isVertical = sidebar.find(".visible.vertical").css("display") !== "none";
return Log.out(isVertical);
}
})(sidebar, Log);
var sidebarControl = (function(sidebar, Log, isVertical) {
return {
/*
* Check to see if the sidebar is currently open
*/
isOpen: function() {
return sidebar.data("open") === true && sidebar.hasClass("open");
},
isClosed: function() {
return sidebar.data("open") !== true && !sidebar.hasClass("open");
},
/*
* Opens the passed sidebar
*/
open: function() {
Log.in("sidebarControlOpen");
if(!!sidebar.data("open") === true) {
// Sidebar is already open
return Log.out(true);
}
if(isVertical()) {
sidebar.find("> .menu").slideDown(100);
}
sidebar.toggleClass("open");
$("<div></div>", { class: "nav-cover" }).appendTo("body").on( "click", this.close )
sidebar.data("open", true);
//docCookies.setItem("navbarOpen", true, null, "/", document.location.hostname, false);
return Log.out(true);
},
close: function() {
Log.in("sidebarControlClose");
if(!!sidebar.data("open") === false) {
// Sidebar is already closed
return Log.out(true);
}
if(isVertical()) {
sidebar.find("> .menu").slideUp();
}
var closed_left = sidebar.data("closed_left");
Log.log("left : " + closed_left);
sidebar.toggleClass("open");
$(".nav-cover").remove();
sidebar.data("open", false);
//docCookies.setItem("navbarOpen", false, null, "/", document.location.hostname, false);
return Log.out(true);
}
}
})(sidebar, Log, isVertical);
/* Only do anything if the sidebar exists */
if(sidebar.isNotEmpty()) {
Log.in("sidebarExists");
if(sidebar.data("open")) {
Log.in("isOpen");
/*
* If the sidebar is currently open, then it is important to
* decide if the sidebar should just toggle to a different
* menu or be closed.
*/
if(!!toggler.data("open")) {
Log.in("hasStrip");
/*
* Prevent the default action if the menu block is meant to
* open the sidbar
*/
Log.log("Prevent default action");
// evt.preventDefault();
/*
* The toggler has a strip associated with it. Find the strip
* and use it to make a decision whether to open it or
* to close it and the sidebar (if it was already open).
*/
var area = toggler.data("open");
var menu_strip = $(".menu-strip." + area);
if(menu_strip.isNotEmpty()) {
Log.in("foundStrip");
var strip_was_open = !!menu_strip.hasClass("open");
var toggle = menu_strip.find(search.toggler);
if(toggle.isNotEmpty()) {
Log.in("foundToggle");
toggle.click();
Log.out();
}
if(strip_was_open) {
Log.in("stripWasOpen");
/*
* If the strip was open at the start of this check,
* then the sidebar needs to be closed.
*/
sidebarControl.close();
Log.out();
} else {
Log.log("stripWasClosed");
}
Log.out();
} else {
Log.in("couldNotFindStrip");
sidebarControl.close();
Log.out();
}
Log.out();
} else {
sidebarControl.close();
}
Log.out();
} else {
Log.in("isClosed");
/*
* If the sidebar is closed, it needs to be opened. Then,
* if the data-open tag notes a submenu to open, that menu
* should be opened.
*/
// Store the current left offset so it can be returned to when closed
var current_left = sidebar.find(search.sidebarLeft).css("left");
if(!!sidebar.data("closed_left") === false) {
sidebar.data("closed_left", "-375px");
}
sidebarControl.open();
if(!!toggler.data("open")) {
Log.in("hasStrip");
/*
* Prevent the default action if the menu block is meant to
* open the sidbar
*/
Log.log("Prevent default action");
evt.preventDefault();
/*
* If the menu block contains any information
* as to the menu to open, then it needs to be
* opened.
*/
// Fetch the menu strip to be opened that's stored
// on the toggler's data
var area = toggler.data("open");
var menu_strip = $(".menu-strip."+area);
if(menu_strip.isNotEmpty()) {
Log.in("foundStrip");
/*
* If the menu strip exists, then toggle it open
* by clicking on its toggle button.
*/
var toggle = menu_strip.find(search.toggler);
if(toggle.isNotEmpty()) {
Log.in("foundToggle");
// As there is a toggle, click it.
toggle.click();
Log.out();
} else {
Log.in("noToggleFound");
Log.out();
}
Log.out();
}
Log.out();
}
Log.out();
}
Log.out();
}
Log.out();
});
/**
* Ready function to set up collapsible navigation objects
*/
function ready() {
$(".default-open").removeClass('default-open');
$(search.collapsible).each(function() {
/*
* Set up the collapsing of each of the tagged elements
*/
var toggle = UUID.generateFor(this);
var Log = toggle.data("log");
var parent = toggle.parent();
var toggler = parent.find(search.toggler);
toggler.on("click", function(evt) {
Log.in("click");
/*
* If there is a drop down, then there needs to be a stop on any
* attempt to send to a new page!
*/
Log.log("prevent default action");
evt.preventDefault();
if(toggle.data("collapsible") == "") {
Log.in("justCollapse");
var Toggle = {
getToggle: function(el) {
var Log = Console.to("Toggle").in("getToggle(" + UUID.get(el) +")");
var group_parent = el.parent();
var toggle = group_parent.find(search.toggler);
if(toggle.isNotEmpty()) {
Log.log("foundToggle").out();
return toggle;
} else {
Log.log("noToggleFound").out();
return false;
}
},
open: function(el) {
var Log = Console.to("Toggle").in("open(" + UUID.get(el) +")");
if(!!el.data('open') == false) {
Log.in("canOpen");
el.slideDown(null, function() { myScroll.refresh(); });
el.parent().addClass("open");
el.data("open", true);
Log.out();
}
Log.out();
},
close: function(el) {
var Log = Console.to("Toggle").in("close(" + UUID.get(el) +")");
if(!!el.data('open') == true) {
Log.in("canClose");
el.slideUp();
el.parent().removeClass("open");
el.data("open", false);
Log.out();
}
Log.out();
},
toggle: function(el) {
var Log = Console.to("Toggle").in("toggle(" + UUID.get(el) +")");
if(!!el.data('open') == false) {
Toggle.open(el);
} else {
Toggle.close(el);
}
Log.out();
}
}
if(!!toggle.data("open")) {
Log.log("alreadyOpen");
Toggle.close(toggle);
Log.reset();
return;
}
Log.log("gettingGroup");
var group = toggle.parents("ul").first().find(search.group);
group.each(function(index) {
Log.in("processGroupIndex" + index);
var collapsible = $(this);
var last = (index == group.length - 1);
Toggle.close(collapsible);
if(last) {
Log.in("isLast");
Toggle.open(toggle);
Log.out();
}
Log.out();
});
Log.out();
} else {
Log.in("collapseInto");
var menu_holder_collapsible = toggle.data("collapsible");
var menu_holder_class = menu_holder_collapsible.split(":")[0];
var index = menu_holder_collapsible.split(":")[1];
var menu_holder = $(".menu-holder." + menu_holder_class);
if(menu_holder.isNotEmpty()) {
Log.in("foundMenuHolder");
if(menu_holder.data("open")) {
Log.in("menuIsOpen");
var toggle_field = menu_holder.find(search.collapsible);
if(menu_holder.data("index") == index) {
Log.in("indexMatch");
toggle_field.first().slideUp(function() {
Log.in("emptyMenuHolder");
menu_holder.empty();
Log.out();
});
menu_holder.data("open", false);
Log.out();
} else {
Log.in("differentIndex");
var cloned_toggle = toggle.clone();
cloned_toggle.hide();
if(index > menu_holder.data("index")) {
Log.in("indexGreaterThan");
if(cloned_toggle.children().isNotEmpty()) {
menu_holder.append(cloned_toggle);
}
Log.out();
} else {
Log.in("indexLessThan");
if(cloned_toggle.children().isNotEmpty()) {
menu_holder.prepend(cloned_toggle);
}
Log.out();
}
toggle_field.addClass("remove");
toggle_field.toggle(function() {
Log.in("removeToggleField");
menu_holder.find(".remove").remove();
Log.out();
});
cloned_toggle.toggle("slide");
menu_holder.data("index", index);
Log.out();
}
} else {
Log.in("menuIsClosed");
var cloned_toggle = toggle.clone();
if(cloned_toggle.children().isNotEmpty()) {
cloned_toggle.hide();
menu_holder.html(cloned_toggle);
cloned_toggle.slideDown();
menu_holder.data("open", true);
menu_holder.data("index", index);
}
Log.out();
}
Log.out();
} else {
Log.log("cannotFindMenuHolder");
}
Log.out();
}
Log.reset();
});
Log.reset();
});
}
$(window).load(ready);
})();
不幸的是,CSS 遍布各处,很难整合。如果您可以检查站点并通过检查元素了解样式,看看是否可以找到 javascript 或 css 修复程序,我们将不胜感激。
谢谢。
最佳答案
你的 .sidebar 有 position:fixed。这为我修复了它。只需在移动设备上删除此样式,您可能还想降低其高度。
关于javascript - 移动时的菜单不会滚动,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28962859/
使用 Foundation 6.3.1,我希望在桌面上显示 Canvas 外菜单,在移动设备上显示 Accordion 菜单。例如 This is the desktop view with a co
function HideandUNhideObj(ThisObj) { var nav = document.getElementById(ThisObj).style if (nav.displ
我正在处理一个页面,该页面有一个显示“更新”的链接。当用户单击此链接时,我希望表单使用幻灯片效果并显示在链接下方。提交表单后,它会更新数据库,并且菜单会显示。 我知道这可以用 JavaScript 来
这是我的运行时创建菜单的关键部分: GtkWidget *menu, *menu_item; menu = gtk_menu_new(); menu_item = gtk_image_menu_ite
您好,我想实现一个像这样的 donut 菜单 http://dribbble.com/shots/610433-Wheel-Nav我知道有一种在 css3 中制作 donut 的简单方法。 .doug
我的应用程序中有一个菜单,当菜单打开时我会触发触觉反馈(来自 onTagGesture Action )。 然而 有时当我点击菜单打开触发器时,菜单实际上不会打开,但我仍然收到触觉反馈。我只在菜单实际
也许这是一个简单的解决方案,但我坚持了下来。 这里有我的代码 http://jsbin.com/ejomuv纯CSS菜单 我想要做的是在悬停时在下拉按钮底部设置 0px 边框半径,但仅在下拉菜单上设置
下拉列表、菜单和组合框都是非常常见的用户界面元素。用户习惯于在 native 应用程序和 Web 应用程序中看到这些元素,但它们存在一些问题。 您必须瞄准鼠标。当您将鼠标移开时,有些菜单会折叠,而有些
我有 codeigniter 背景。现在,我正在学习 Laravel。所以,我处于这种情况(示例),我正在尝试创建一个具有多个用户的 web 应用程序。用户类型 A ,他们可以访问菜单 a、菜单 b
我正在学习 JQuery 的基础知识,我的老师显示的 menu() 看起来根本不像我的。 这是我创建的菜单的 LAF: 代码: Hello Hi Welcome World
- SELECT - 上面的显示:none不起作用。我也尝试过“隐藏”,但没有成功。 如何隐藏此选择菜单? 最佳答案 换行与 或并将 id 添加到标签。 - SELECT
我使用 Jquery 创建菜单,如下所示: homeinfo2info3 Jquery 代码如下: $(document).ready(function(){ $(".prof_info1").unb
我是 C 新手,我需要为项目构建一个带有循环的菜单。我有两个问题。 1) 我想在 else 中添加一个字符,如果在主菜单中按“2”后询问某事,问题将是“你要去参加事件吗?”用户可以输入聊天“Y”或“N
大家好,过去几个小时我一直在为类(class)编写这个程序,但似乎无法解决最后两个问题。它基本上是一个略微修改的 CashRegister 类,通过菜单提供基本功能。我遇到的问题是: 1) 用户第一次
List studentInfo = new LinkedList(); int choice; boolean flag = true; Student student =
我正在使用 bootsrap 4 alpha 6 和 midnight.js 来更改导航菜单切换器的颜色。我想在它旁边插入一个文本(菜单)。捕获中的示例。对于文本切换器,我使用 fontawesome
我正在尝试使用 CSS 菜单解决菜单在 IE 6 中无法正确显示的问题 alt text http://content.screencast.com/users/Dokmanc/folders/Jin
我无法让这段代码工作 - 我想要的是当我将鼠标悬停在圆圈上时,菜单会出现,然后如果我将鼠标从圆圈或菜单上移开,它就会消失。我尝试做的任何事情都是非常错误的,例如 onmouseover 在圆圈上然后在
我有一个典型的 CSS 顶部导航,当您滑过不同的父菜单项时,它会显示一个子菜单。如何更改代码以保持显示事件子菜单。因此,如果您在该父菜单项或其子项之一的页面上,它将保持显示该子菜单,除非您将鼠标悬停在
我很亲近。我怎样才能在我的 上有 MENU 1。 fiddle显示为默认菜单选项,然后在 MENU 2 悬停时更改? 提前致谢。继续编码! :) 最佳答案 要根据您的响应完全远离 jquery 进行编
我是一名优秀的程序员,十分优秀!