【问题标题】:Cross-Browser Unique Shaped Link跨浏览器独特形状的链接
【发布时间】:2013-12-04 20:33:33
【问题描述】:

我正在开发一个网络应用程序,该应用程序允许用户输入内容,然后将其提交到人们的手机上。它就像一个魅力,但我的标志有一些问题。标志如下:

我在左侧有一个按钮,它是一个不同的链接,这就是我们不希望徽标链接覆盖它的原因。

我的第一个想法是使用边界半径,但底部的角度太尖了。例如,如果我使用的边框半径为:0 0 75px 75px,它会执行以下操作:

因此,如果我们将角度变大,假设:0 0 100px 100px,它会执行以下操作:

(没有区别。)

如果我增加左下角,它会推出右下角,反之亦然。我最终做了以下操作,因为右侧没有链接。

左边还有一个很小的空间,但要好得多。除了现在右边有一个大链接,这可能会打扰最终用户,因为那里不应该有任何东西。

所以,我们选择使用图像映射并做了以下事情:

这行得通! ……有点。现在图像的左下角,在红色链接上方,是一个死角。因此,另一种方法是我们将底角设为不同的链接。让我举例说明。

这解决了这个问题。直到用户滚动。如您所见,徽标(和标题)是固定的。导航不是。然后会发生以下情况。

我正在使用 jQuery,因此滚动距离并不难,将其与该区域中的导航项进行比较,并更改图像地图的该部分以匹配它......但我觉得我这有点过头了。

(然后,最重要的是,不同的用户有不同的导航......)

您知道类似的解决方案吗?还是我被图像映射和 jquery 链接更改卡住了?

非常感谢!

编辑:要确认我链接到的“死区”,请查看下面的图片:

即使图像映射在盾牌周围,盾牌仍然是一个图像并且有方角,使角落成为不可链接的区域,除非为该区域制作另一个图像映射。我这样做了,但是由于导航滚动,该链接区域不再与它下面的导航匹配。图像地图上的边界半径也可以解决问题,但我采用了不同的方法。

希望能回答这个问题!

【问题讨论】:

  • 请问您为什么需要链接死区?当然,您可以从img 标签中取出href 并将其添加到相关的图像映射元素中?还是我错过了什么?
  • 你知道可以用斜线语法设置两个单独的边框半径吗?例如。 border-radius: 0 0 50px 50px / 0 0 100px 100px 用于 50 像素的 x 半径和 100 像素的 y 半径。试着让 y 半径大于 x 半径,你会得到一个更锐利的盾牌形状(尽管仍然没有逐渐变细到底部的一点)。
  • 抱歉耽搁了。这个周末我们要用它来举办一场大型体育赛事,我不得不完成其他事情。当我将盾牌周围的区域作为图像映射时,底角仍在图像映射中,但它们没有链接,然后造成“死区”。我会附上一张图片。我选择了伊舍伍德的回答,但我很感激你的回答。乔丹,我确实知道这种语法。这个很酷!谢谢!

标签: javascript jquery html css image


【解决方案1】:

您或许可以使用这种 CSS3 徽章形状技术重新审视您的 CSS 方法:

http://jsfiddle.net/isherwood/2v2wM

#shield {
    position: relative;
    width: 140px;
    height: 100px;
    background-color: navy;
    border-radius: 0 0 50px 50px;
    display: inline-block;
}
#shield:before, #shield:after {
    position: absolute;
    margin-top: 30px;
    content:"";
    left: 70px;
    top: 0;
    width: 70px;
    height: 115px;
    background: navy;
    border-radius: 50px 50px 0 0;
    -webkit-transform: rotate(-45deg);
    -moz-transform: rotate(-45deg);
    -ms-transform: rotate(-45deg);
    -o-transform: rotate(-45deg);
    transform: rotate(-45deg);
    -webkit-transform-origin: 0 100%;
    -moz-transform-origin: 0 100%;
    -ms-transform-origin: 0 100%;
    -o-transform-origin: 0 100%;
    transform-origin: 0 100%;
}
#shield:after {
    left: 0;
    -webkit-transform: rotate(45deg);
    -moz-transform: rotate(45deg);
    -ms-transform: rotate(45deg);
    -o-transform: rotate(45deg);
    transform: rotate(45deg);
    -webkit-transform-origin: 100% 100%;
    -moz-transform-origin: 100% 100%;
    -ms-transform-origin: 100% 100%;
    -o-transform-origin: 100% 100%;
    transform-origin :100% 100%;
}

形状不太对,但经过一些调整应该可以很好地工作。

【讨论】:

  • 嘿,谢谢!这很好用。只有 IE8 不支持伪 MX 过滤器,并且 Javascript 无法旋转它们,因为它们实际上不是元素,但这确实解决了所有现代浏览器中的问题。谢谢!
【解决方案2】:

要详细说明我的评论,您可以将href 链接直接添加到图像地图元素:

<img src="logo.jpg" usemap="#logo" border="0">
<map name="logo">
  <area shape="polygon" coords="[long list of coordinates]" href="www.mylink.com">
</map>

不确定我是否在您的示例中遗漏了什么...

【讨论】:

  • 我认为OP是说盾牌移动,取决于滚动和布局,因此无法提前确定“死区”链接。
  • 也许吧。但是仍然应该有一种方法可以使用(更好的支持?)图像映射来实现它。作为旁注,如果 OP 回到他的热门问题并更加了解他在做什么,这将有所帮助......
  • 对不起。 OP一直在忙着准备灰杯。我选择了 isherwood 的答案,但只是为了分类,我对我的问题进行了编辑,以便您了解我的意思。非常感谢!
猜你喜欢
  • 2012-06-05
  • 2023-03-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多