使用背景图像、标题和类别添加指向 div 的链接

Posted

技术标签:

【中文标题】使用背景图像、标题和类别添加指向 div 的链接【英文标题】:Add links to div with Background Image, title and category 【发布时间】:2017-08-07 13:07:45 【问题描述】:

我们的特色图片作为 div 背景,我们无法链接它

当我们尝试使用 href 作为绝对值时,一定有问题!!

我们需要链接 div 和它的标题,但保留 category 和 cmets url

urls 不受 div 上的 post url 影响

你可以在这里看到实时代码http://codepen.io/earngate/pen/dvVLEj

#thumb-wrap 
  margin: 0 auto;
  overflow: hidden;


.thumb-element:before 
  content: "";
  position: absolute;
  width: 100%;
  height: 100%;
  right: 0;
  bottom: 0;
  left: 0;
  background: -moz-linear-gradient(top, rgba(27, 26, 25, 0) 0%, rgba(27, 26, 25, 0) 46%, rgba(27, 26, 25, 0.44) 65%, rgba(27, 26, 25, 1) 99%, rgba(27, 26, 25, 1) 100%);
  background: -o-linear-gradient(top, rgba(27, 26, 25, 0) 0%, rgba(27, 26, 25, 0) 46%, rgba(27, 26, 25, 0.44) 65%, rgba(27, 26, 25, 1) 99%, rgba(27, 26, 25, 1) 100%);
  background: -ms-linear-gradient(top, rgba(27, 26, 25, 0) 0%, rgba(27, 26, 25, 0) 46%, rgba(27, 26, 25, 0.44) 65%, rgba(27, 26, 25, 1) 99%, rgba(27, 26, 25, 1) 100%);
  background: -webkit-linear-gradient(top, rgba(27, 26, 25, 0) 0%, rgba(27, 26, 25, 0) 46%, rgba(27, 26, 25, 0.44) 65%, rgba(27, 26, 25, 1) 99%, rgba(27, 26, 25, 1) 100%);
  background: linear-gradient(to bottom, rgba(27, 26, 25, 0) 0%, rgba(27, 26, 25, 0) 46%, rgba(27, 26, 25, 0.44) 65%, rgba(27, 26, 25, 1) 99%, rgba(27, 26, 25, 1) 100%);
  filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#001b1a19', endColorstr='#1b1a19', GradientType=0);


.thumb-element:hover .thumb-title,
.thumb-element:hover .thumb-summary 
  margin-bottom: 5px;
  background: no-repeat 50% 70%;
  -webkit-transition: all 0.3s;
  transition: all 0.3s;


.thumb-category 
  position: absolute;
  background: green;
  border-radius: 30px;
  padding: 1px 15px;
  top: -30px;
  right: 15px;


#thumb-wrap a 
  opacity: 1.0;
  color: #fff;


.relative 
  position: relative


#thumb-first-container 
  width: 50%;
  float: right;
  height: 390px !important;


#thumb-container 
  float: right;
  width: 20%;
  height: 195px !important;


#thumb-container:nth-child(5n+2),
#thumb-container:nth-child(5n+5) 
  width: 30%;


.thumb-title 
  position: absolute;
  bottom: 10px;
  right: 10px;
  direction: rtl


.thumb-link 
  position: absolute;
  top: 0;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 100%;
  z-index: 1;


.thumb-dummy 
  padding-top: 60%;


.thumb-element 
  position: absolute;
  top: 0;
  bottom: 0;
  left: 0;
  right: 0;
  text-align: center;
  border: 1px solid white;
  padding-top: 19px;
  background: no-repeat 50% 50%;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;


.thumb-content 
  width: 100%;


.thumb-next 
  position: absolute;
  top: 50%;


.thumb-prev 
  position: absolute;
  top: 50%;


h2 
  font-size: 10pt;
<div id="thumb-wrap">
  <div class="thumb-content">
    <div id="thumb-first-container" class="relative">
      <div class="thumb-dummy">
      </div>
      <div title="6 Animals that Went Viral Around the World" class="thumb-element" style="background-image: url('http://i.imgur.com/9GnXdDFl.jpg')">
        <div class="thumb-title">
          <div class="thumb-category">
            <a href="http://animal-site.com/?cat=102363">News</a>
          </div>
          <a class="thumb-link" title="6 Animals that Went Viral Around the World" href="http://animal-site.com/?p=106588" rel="bookmark">
            <h2>6 Animals that Went Viral Around the World </h2>
          </a>
          <div class="post-meta-info">
            <span class="post-meta"><i class="fa fa-clock-o"></i>
	<a rel="bookmark">2 weeks ago</a></span> <span class="post-meta">
	<i class="fa fa-comments"></i>
	<a href="http://animal-site.com/?p=106588#respond">0</a></span>
          </div>
          <p></p>
          <div class="thumb-summary">
          </div>
        </div>
      </div>
    </div>
  </div>
</div>

【问题讨论】:

【参考方案1】:

为什么不将带背景的 Div 更改为 span,然后用锚点包裹它。让主包装器相对,因此帖子元(类别链接,cmets 链接)将是绝对的,然后只需增加 z-index 使其位于顶部。

你可以试试这个。我已经更改了代码,因为不需要标签。

#featured-image
  position: relative;
  width: 50%;
  float: right;
  margin: 10px;


*
  margin: 0;
  padding: 0;

#featured-image figure a
  display: block;

#featured-image figure span
  display: block;
  height: 390px;
  background: no-repeat 50% 50%;
  -webkit-background-size: cover;
  -moz-background-size: cover;
  -o-background-size: cover;
  background-size: cover;
  background-image: url('http://i.imgur.com/9GnXdDFl.jpg');



#featured-image figure span:before 
        content: "";
        position: absolute;
        width: 100%;
        height: 100%;
        right: 0;
        bottom: 0;
        left: 0;
	background: -moz-linear-gradient(top, rgba(27,26,25,0) 0%, rgba(27,26,25,0) 46%, rgba(27,26,25,0.44) 65%, rgba(27,26,25,1) 99%, rgba(27,26,25,1) 100%);
    background: -o-linear-gradient(top, rgba(27,26,25,0) 0%, rgba(27,26,25,0) 46%, rgba(27,26,25,0.44) 65%, rgba(27,26,25,1) 99%, rgba(27,26,25,1) 100%);
    background: -ms-linear-gradient(top, rgba(27,26,25,0) 0%, rgba(27,26,25,0) 46%, rgba(27,26,25,0.44) 65%, rgba(27,26,25,1) 99%, rgba(27,26,25,1) 100%);
	background: -webkit-linear-gradient(top, rgba(27,26,25,0) 0%,rgba(27,26,25,0) 46%,rgba(27,26,25,0.44) 65%,rgba(27,26,25,1) 99%,rgba(27,26,25,1) 100%);
	background: linear-gradient(to bottom, rgba(27,26,25,0) 0%,rgba(27,26,25,0) 46%,rgba(27,26,25,0.44) 65%,rgba(27,26,25,1) 99%,rgba(27,26,25,1) 100%);
	filter: progid:DXImageTransform.Microsoft.gradient( startColorstr='#001b1a19', endColorstr='#1b1a19',GradientType=0 );


#featured-image .info-wrap
  position: absolute;
  bottom: 0;
  right: 0;
  width: 20%; 
  z-index: 1000; 
  

.info-wrap 
  text-align: right;
  padding: 10px;

.info-wrap h2
  font-size: 12pt;
  padding-bottom: 15px;

.info-wrap a
  color: #fff;
  text-decoration: none;


.info-wrap .post-cat
  background: green;
	border-radius: 30px;
	padding: 1px 15px;
  text-align: center;
  display: inline-block;
  margin-bottom: 10px;

.post-meta p a
  display: inline-block;
  margin: 0 3px;

.post-meta p a:hover,
.info-wrap h2 a:hover
  color: green;
  
<div id="featured-image">
  <figure>
    <a href="#imagelinkhere"><span title="6 Animals that Went Viral Around the World"></span></a>
  </figure>
  <div class="info-wrap">
  <h2 class="entry-title">
    <a href="#titlelinkhere">6 Animals that Went Viral Around the World</a>
  </h2>
  <div class="post-meta">
    <div class="post-cat"><a href="#cat-link">News</a></div>
    <p><a href="#comments-link">Comments</a><a href="#respond-link">Respond</a></p>
  </div><!--// end .post-meta -->
  </div><!--// end .info-wrap -->

</div><!--// end #featured-image -->

【讨论】:

【参考方案2】:

只需在“thumb-title”之前添加新的“a”并使其绝对。 这是更新的版本jsfiddle

添加了 html

<a href="http://google.com" class='imageLink'>Click Image</a>

在 CSS 中

.imageLink
        position: absolute;
        top:0;
        right: 0;
        bottom: 0;
        left: 0; 

【讨论】:

我们试过了,但不需要图像上的任何其他文字来点击链接

以上是关于使用背景图像、标题和类别添加指向 div 的链接的主要内容,如果未能解决你的问题,请参考以下文章

div的背景图像和边距顶部问题

如何使 div 响应的背景图像?

将 svg 拟合到 angular.js 中的背景图像 div

div、背景图像和图像映射

将动画添加到 div 中的图像之一

更改链接悬停时的背景图像