File

src/app/pages/project/project.component.ts

Implements

OnInit

Metadata

selector stb-project
styleUrls ./project.component.scss
templateUrl ./project.component.html

Index

Properties
Methods

Constructor

constructor(service: ProjectService)
Parameters :
Name Type Optional
service ProjectService No

Methods

ngOnInit
ngOnInit()
Returns : void

Properties

projects
Type : any
import { Component, OnInit } from '@angular/core';
import { ProjectService } from './project.service';

@Component({
  selector: 'stb-project',
  templateUrl: './project.component.html',
  styleUrls: ['./project.component.scss']
})
export class ProjectComponent implements OnInit {
  projects: any;

  constructor(private service: ProjectService) {}
  ngOnInit() {
    this.service.getProjects().subscribe(projects => {
      this.projects = projects;
    });
  }
}
<div class="projects-container" fxLayout="row wrap">

  <div class="project mat-elevation-z4 divide" fxFlex="calc(33.3333% - 12px)" *ngFor="let project of projects">

    <div class="header" style="background: linear-gradient(to left, rgb(203, 173, 109), rgb(213, 51, 105));">
      <div class="content">
        <div fxFlex="auto" fxLayout="column">
          <div class="top-row" fxLayout="row" fxLayoutAlign="space-between center">
            <div class="">{{project.date | date:"yyyy年MM月dd日"}}</div>
            <button mat-icon-button>
              <mat-icon>more_horiz</mat-icon>
            </button>

          </div>
          <div class="codename" fxFlex="auto" fxLayout="row" fxLayoutAlign="center center">
            {{project.name}}
          </div>
        </div>
      </div>
    </div>

    <div class="details">
      <div class="content">
        <div class="name">产品改进</div>
        <div class="members" fxLayout="row">
          <div class="member ">
          </div>
        </div>
        <div class="divider"></div>
        <div class="status success ongoing">进行中</div>
      </div>
    </div>

    <div class="overlay">
      <div class="overlay-content" fxLayout="column" fxLayoutAlign="space-between">
        <div class="overlay-actions" fxLayout="row" fxLayoutgap="16px">
          <button mat-icon-button>
            <mat-icon>edit</mat-icon>
          </button>
          <button mat-icon-button>
            <mat-icon>backup</mat-icon>
          </button>
          <button mat-icon-button>
            <mat-icon>delete</mat-icon>
          </button>

        </div>

        <button mat-raised-button>
          <span class="mat-button-wrapper">查看详情</span>
        </button>

      </div>
    </div>
  </div>

</div>

./project.component.scss

:host {
  display: block;
  padding: 12px;
}

.divide {
  margin: {
    left: 12px;
    right: 12px;
    top: 12px;
    bottom: 12px;
  }
}

.project {
  background: #fff;
  border-radius: 2px;
  overflow: hidden;
  position: relative;

  .header {
    position: relative;

    &:before {
      display: block;
      content: '';
      width: 100%;
      padding-top: 42.85714286%;
    }

    > .content {
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      color: #fff;
      padding: 8px 18px 24px 24px;

      .top-row {
        font-size: 12px;
      }

      .codename {
        font-size: 20px;
        font-weight: 700;
      }
    }
  }

  .details {
    padding: 20px 24px;

    .members {
      margin-top: 16px;
    }

    .divider {
      width: 100%;
      height: 1px;
      background: #e0e0e0;
      margin: 20px auto 16px;
    }

    .status {
      font-weight: 700;
      font-size: 14px;
      text-align: center;

      &.ongoing {
        color: #4caf50;
      }
    }
  }

  .overlay {
    position: absolute;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    height: 100%;
    width: 100%;
    background: rgba(0, 0, 0, 0.7);
    opacity: 0;
    visibility: hidden;
    transition: all 0.25s;

    .overlay-content {
      padding: 20px 24px 24px;
      height: 100%;

      .overlay-actions {
        .mat-icon-button {
          margin-right: 16px;
          background: #fff;
          color: #666;
          box-shadow: 0 2px 4px -1px rgba(0, 0, 0, 0.2),
            0 4px 5px 0 rgba(0, 0, 0, 0.14), 0 1px 10px 0 rgba(0, 0, 0, 0.12);
        }
      }
    }
  }

  &:hover {
    .overlay {
      visibility: visible;
      opacity: 1;
    }
  }
}
Legend
Html element
Component
Html element with directive

result-matching ""

    No results matching ""