20 lines
		
	
	
		
			640 B
		
	
	
	
		
			SCSS
		
	
	
	
			
		
		
	
	
			20 lines
		
	
	
		
			640 B
		
	
	
	
		
			SCSS
		
	
	
	
// 合并 map
 | 
						|
@function map-deep-merge($parent-map, $child-map){
 | 
						|
	$result: $parent-map;
 | 
						|
	@each $key, $child in $child-map {
 | 
						|
		$parent-has-key: map-has-key($result, $key);
 | 
						|
		$parent-value: map-get($result, $key);
 | 
						|
		$parent-type: type-of($parent-value);
 | 
						|
		$child-type: type-of($child);
 | 
						|
		$parent-is-map: $parent-type == map;
 | 
						|
		$child-is-map: $child-type == map;
 | 
						|
			
 | 
						|
		@if (not $parent-has-key) or ($parent-type != $child-type) or (not ($parent-is-map and $child-is-map)){
 | 
						|
			$result: map-merge($result, ( $key: $child ));
 | 
						|
		}@else {
 | 
						|
			$result: map-merge($result, ( $key: map-deep-merge($parent-value, $child) ));
 | 
						|
		}
 | 
						|
	}
 | 
						|
	@return $result;
 | 
						|
};
 |