【问题标题】:button width 100% if have only one post如果只有一篇文章,按钮宽度为 100%
【发布时间】:2021-05-25 15:52:40
【问题描述】:

如果博客中只有一篇文章,我正在尝试创建一个按钮,它在刀片中的宽度为 100%。

我解释得更好。我正在写博客。当打开帖子时,我可以看到我的帖子和两个按钮(上一个和下一个),如果我在最后一个帖子中,我希望上一个按钮有 100% 并且我在第一个帖子中相同。但如果我在第二篇文章中,我需要以 50% 的比例显示 prev 和 next。

在我的控制器中我有这个:

public function show($url)
    {
        $post = Blog::where('url', '=', $url)->first();

        $next = Blog::where('id', '>', $post->id)->min('id');
        $previous = Blog::where('id', '<', $post->id)->max('id');

        $nextPost = Blog::where('id', '=', $next)->first();
        $previousPost = Blog::where('id', '=', $previous)->first();

        //$popularPost = Blog::where('visualization', '>=', 5)->get();
        $categories = BlogCategory::all();

        //insert time when show post
        $this->visualizationRepository->countVisualization($post->id, 'Model\Blog', $_SERVER['REMOTE_ADDR']);

        return view('web.singleBlog')
            ->with('post', $post)
            ->with('popular', [])
            ->with('next', $nextPost)
            ->with('previous', $previousPost)
            ->with('categories', $categories);
    }

在我看来,我有这个:

<div class="post-nav-wrap fl-wrap">
      @if($previous != null)
        <a class="post-nav post-nav-prev" href="{{ url('blog/'.$previous->name)}}"><span class="post-nav-img"><img src="{{$previous->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong></strong>{{trans('web.single_blog_previous_post')}}<br>{{$previous->name}}</span></a> 
      @endif
      @if($next != null)
        <a class="post-nav post-nav-next" href="{{ url('blog/'.$next->name)}}"><span class="post-nav-img"><img src="{{$next->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong>{{trans('web.single_blog_next_post')}}</strong><br>{{$next->name}}</span></a>
         
       @endif
</div>

我怎么能做到这一点? nextprevious 返回了一个对象,如果检查它是否为 &gt;=1,我无法做到这一点

更新

@if( $previous != null ) 
   @if( $next != null ) 
     <a class="post-nav post-nav-prev half" style="width: 100%;" href="{{ url('blog/'.$previous->name)}}"><span class="post-nav-img"><img src="{{$previous->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong></strong>{{trans('web.single_blog_previous_post')}}<br>{{$previous->name}}</span></a> 
     <a class="post-nav post-nav-next half" style="width: 100%;" href="{{ url('blog/'.$next->name)}}"><span class="post-nav-img"><img src="{{$next->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong>{{trans('web.single_blog_next_post')}}</strong><br>{{$next->name}}</span></a>
     @else
       <a class="post-nav post-nav-prev fullwidth " style="width: 100%;" href="{{ url('blog/'.$previous->name)}}"><span class="post-nav-img"><img src="{{$previous->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong></strong>{{trans('web.single_blog_previous_post')}}<br>{{$previous->name}}</span></a> 
        @endif
     @else
      <a class="post-nav post-nav-next fullwidth" style="width: 100%;" href="{{ url('blog/'.$next->name)}}"><span class="post-nav-img"><img src="{{$next->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong>{{trans('web.single_blog_next_post')}}</strong><br>{{$next->name}}</span></a>
@endif

更新 2

<div class="post-nav-wrap fl-wrap">
     @if($previous != null)
     <a class="{{ $next !=  null ? 'half post-nav post-nav-prev' : 'full post-nav post-nav-prev' }}" href="{{ url('blog/'.$previous->name)}}"><span class="post-nav-img"><img src="{{$previous->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong></strong>{{trans('web.single_blog_previous_post')}}<br>{{$previous->name}}</span></a> 
      @endif
      @if($next != null)
        <a class="{{ $next !=  null ? 'half post-nav post-nav-next' : 'full post-nav post-nav-next' }}" href="{{ url('blog/'.$next->name)}}"><span class="post-nav-img"><img src="{{$next->media[0]->url}}" alt=""></span><span class="post-nav-text"><strong>{{trans('web.single_blog_next_post')}}</strong><br>{{$next->name}}</span></a>
       @endif
 </div>

【问题讨论】:

    标签: php laravel laravel-blade laravel-5.8


    【解决方案1】:

    假设如果$next 和$previous 都是object,如果它们为null 则表示当前post 是最后一篇 |首先。

    此时,如果您不使用 css 库,请创建一个类:

    .half { width: 50%; }
    .fullwidth { width: 100%; }
    

    那么你需要控制当前帖子是第一篇还是最后一篇:

    @if( $previous != null ) 
        @if( $next != null ) 
            <!-- HERE YOUR PREVIOUS BTN WITH HALF CLASS -->
            <!-- HERE YOUR NEXT BTN WITH HALF CLASS -->
        @else
            <!-- HERE YOUR PREVIOUS BTN WITH FULL CLASS -->
        @endif
    @else
        <!-- HERE YOUR NEXT BTN WITH FULL CLASS -->
    @endif
    

    希望这可以解决您的问题。

    【讨论】:

    • 这里不需要添加if else条件和复制HTML标签。 OP 可以只在标签中使用条件运算符。例如:&lt;button class="{{ $next != null ? 'half' : 'full' }}"&gt;
    • 我只公开“逻辑”来解决他的问题,obv 是不必要的重复标签。
    • @Emanuele 感谢您的回复,但是当只有一个帖子时它是正确的,但是如果我进入下一个帖子,我可以将上一个和下一个按钮显示为 100% 和我不想要这个我想要 50%
    • @thebrownkid 你说的我不知道怎么做
    • @daviserraalonso 这是因为您将样式属性添加到覆盖类并使其 100% 的标记中。删除样式属性,因为您的新类集将更改大小。您也可以查看这篇文章以了解如何使用条件运算符 -> Click
    猜你喜欢
    • 1970-01-01
    • 2020-10-11
    • 1970-01-01
    • 1970-01-01
    • 2013-07-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-11-24
    相关资源
    最近更新 更多